参考链接
http://daiqingyang.blog.51cto.com/1070509/1295233
我的一脚本内容如下
#!/bin/bash
cat $PWD/tmp/scene.txt | while read host port dstdir
do
echo $host $port $dstdir
scp runSceneServer.sh $host:$dstdir
##下面这个ssh这一行不加-n参数 就只执行了scene.txt这个文件的第一行内容 加上去就正常了
ssh -n $host "cd $dstdir;sh runSceneServer.sh $port scene.jar"
done
原因:
while中使用重定向机制,输入信息在循环开始就已经读入并重定向给了整个while语句,当readd读完一行后,接着执行的ssh命令时,ssh正好也会读取sdin的内容,所以就把剩下的输入一并读走了。
解决:
用ssh -n选项(Redirects stdin from /dev/null (actually, prevents reading from stdin).)
或者直接显示的使用 ssh localhost </dev/null
转载于:https://blog.51cto.com/liveforlinux/1417474