观察如下代码
cat list |while read line
do
ssh xxx@192.168.1.200 "command"
done
上面的代码实际执行的时候会发现只执行第一行,后面的循环就没了,
google了一下,发现可以用如下的代码解决问题
cat list |while read line
do
ssh -n xxx@192.168.1.200 "command"
done
这是什么原因呢?那就要从-n的含义上找了,-n的意思是ssh以/dev/null作为stdin
那是不是如果没有-n的话,就以默认的stdin来作为stdin了,而如果是shell的话
cat list|while read line应该是把list文件作为了stdin,这样一来ssh就直接把剩下的
东西吃掉了。