天天看点

while循环中使用ssh,防止ssh吃掉while的输入

现象:

正常情况下while的输入如下:

[oldboy@daiqingyangs ~]$ seq 4|while read line;do echo $line;done

1

2

3

4

当在while中加入ssh后,while中的输入就被吃掉了,如下:

[oldboy@daiqingyangs ~]$ seq 4|while read line;do ssh localhost -p 52113 echo $line ;done

原因:

while中使用重定向机制,输入信息在循环开始就已经读入并重定向给了整个while语句,当readd读完一行后,接着执行的ssh命令时,ssh正好也会读取sdin的内容,所以就把剩下的输入一并读走了。