【发布时间】:2018-08-23 16:28:19
【问题描述】:
这看起来很简单,但如果我尝试对从文件中读取的数据进行任何处理,我不确定为什么它不会超出第一行。
代码:
while IFS="" read -r line
do
u=`echo $line | awk '{print $4}'`
h=`echo $line | awk '{print $2}'|cut -f1 -d'.'`
echo "$h : $u"
ssh $h grep $u /etc/shadow
done < "/var/tmp/user_data"
user_data 是一个文件,每个用户/系统都有一行,例如:
xxx unixhost01 xxx admin69 xxx... ....
xxx host xxx uid xxx... ...
...
...
当我运行此代码时,它仅适用于第一行然后退出。在 shell 中调试显示没有问题。当我在没有 ssh 操作/命令的情况下运行它时,它会处理整个数据文件。
shell 是 ksh:
# ps
PID TTY TIME CMD
1424 pts/138 0:00 ps
18521 pts/138 0:02 ksh
在执行时只打印(第一行):
unixhost01 : admin69
admin69:$1$gFfcEQETGZAo6W0:17599:0:90:10:::
有什么想法吗?
【问题讨论】:
标签: loops unix while-loop ksh do-while