您的位置:首页 > 其它

while read中使用ssh命令的注意事项

2014-05-27 09:54 288 查看
参考链接
/article/4335651.html

我的一脚本内容如下

#!/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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: