参考链接

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