我有一个脚本从循环中的管道读取并在循环中运行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