Loops 逐行处理文件在ksh中不起作用
这看起来很简单,但我不确定,若我试图对从文件中读取的数据进行任何处理,为什么它不会读取超过第一行的内容 代码: 当我运行这段代码时,它只在第一行工作,然后退出。shell中的调试没有显示任何问题。当我在没有ssh操作/命令的情况下运行它时,它会处理整个数据文件 壳牌是ksh:Loops 逐行处理文件在ksh中不起作用,loops,unix,while-loop,ksh,do-while,Loops,Unix,While Loop,Ksh,Do While,这看起来很简单,但我不确定,若我试图对从文件中读取的数据进行任何处理,为什么它不会读取超过第一行的内容 代码: 当我运行这段代码时,它只在第一行工作,然后退出。shell中的调试没有显示任何问题。当我在没有ssh操作/命令的情况下运行它时,它会处理整个数据文件 壳牌是ksh: # ps PID TTY TIME CMD 1424 pts/138 0:00 ps 18521 pts/138 0:02 ksh 执行时,仅打印(第一行): 有什么想法吗?问
# ps
PID TTY TIME CMD
1424 pts/138 0:00 ps
18521 pts/138 0:02 ksh
执行时,仅打印(第一行):
有什么想法吗?问题在于
ssh
本身,因为它使用标准输入,所以下次循环获取另一行时,就没有剩下的了。您可以通过将命令更改为:
ssh $h cat
并在第一次ssh
会话期间输出文件的其余部分
您至少可以通过两种方法解决此问题,第一种方法是简单地将ssh
与标准输入断开:
ssh $h grep $u /etc/shadow </dev/null
ssh$h grep$u/etc/shadow
unixhost01 : admin69
admin69:$1$gFfcEQETGZAo6W0:17599:0:90:10:::
ssh $h cat
ssh $h grep $u /etc/shadow </dev/null
while IFS="" read -u3 -r line ; do # reads file #3
blah blah blah
done 3</var/tmp/user_data # sends data via file #3