我的sctipt中有while循环的下一个代码:
TMP_FILE=`mktemp`
some_script.sh | grep aa > $TMP_FILE
while read i
do
echo $i
number=`ssh somehost cat somefile | grep 11 `
echo $number
done < $TMP_FILE
TMP_FILE的内容如下:
hostname1 AB_CDEF_JH10
hostname2 BC_DEF_JK19
...
在这种情况下,脚本只能正常工作一次循环传递,从TMP_FILE中获取第一行。之后,脚本退出。有没有想过为什么它不想处理除第一个之外的其他线?
答案 0 :(得分:3)
尝试将-n
选项传递给ssh
,以防止它从stdin读取。
默认情况下,ssh
从stdin(在本例中是您的文件)中读取,并将其转发到远程主机上运行的命令的stdin。结果,整个文件被ssh
消耗,循环只执行一次!