BASH:将文件送入while循环

时间:2012-09-25 10:18:06

标签: bash shell

我的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中获取第一行。之后,脚本退出。有没有想过为什么它不想处理除第一个之外的其他线?

1 个答案:

答案 0 :(得分:3)

尝试将-n选项传递给ssh,以防止它从stdin读取。

默认情况下,ssh从stdin(在本例中是您的文件)中读取,并将其转发到远程主机上运行的命令的stdin。结果,整个文件被ssh消耗,循环只执行一次!