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

1

原因

while中使用重定向機制,輸入信息在循環開始就已經讀入並重定向給了整個while語句,當readd讀完一行後,接着執行的ssh命令時,ssh正好也會讀取sdin的內容,所以就把剩下的輸入一併讀走了。

解決

用ssh -n選項(Redirects stdin from /dev/null (actually, prevents reading from stdin).)

或者直接顯示的使用 ssh localhost </dev/null

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章