2012-09-25 58 views
0

我有while循环在我sctipt下面的代码:TMP_FILE的BASH:饲养文件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 

内容是这样的:

hostname1 AB_CDEF_JH10 
hostname2 BC_DEF_JK19 
... 

在这种情况下,脚本正常工作只有一个循环传递,从TMP_FILE获取第一行。之后,脚本退出。有什么想法,为什么它不想处理除了第一个以外的其他线?

+0

无用的使用cat:'ssh -n somehost grep 11 somefile'。 – Jens

回答

3

尝试将-n选项传递给ssh以防止其从标准输入读取。

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

+0

谢谢。这对我有效。 –

+1

在这种情况下,为什么要使用'$ TMP_FILE'?只需将它管入“while”循环。 – Jens