ssh – 如何防止脚本吞噬所有标准输入?

前端之家收集整理的这篇文章主要介绍了ssh – 如何防止脚本吞噬所有标准输入?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个脚本从循环中的管道读取并在循环中运行expect脚本和普通的 shell脚本.两个脚本都将ssh运行到另一台服务器以获取一段数据.例如:
cat /tmp/file |
while read a b c d
do
   s=`expect-script server1 $b`
   c=`ssh $b normal-script`
   echo $s $c
done

即使/ tmp / file中有许多行,脚本在处理完第一行后也会退出.我怀疑期望脚本吞噬了所有stdin,所以当它返回时,没有什么可读的.我怎么能避免这个?我不希望我调用的任何脚本从主脚本的stdin中读取.

cat /tmp/file |
while read a b c d
do
    {
        s=`expect-script server1 $b`
        c=`ssh $b normal-script`
        echo $s $c
    } < /dev/null
done

{command …}语法允许您将重定向或管道应用于一系列命令.

我还会注意到你的例子中不需要猫.你可以这样做:

while read a b c d
do
    ...
done < /tmp/file

猜你在找的Bash相关文章