ファイルをスキャンする次のスクリプトがあります。各行はリモートノードのホスト名です。
echo -e "node1\nnode2\nnode3" > tempfile
while read aline; do
echo "@$aline";
done < tempfile
これにより、3行@node1
@node2
で@node3
正しく生成されます。しかしssh
、ループ内に追加すると、次のようになります
while read aline; do
echo "@$aline";
ssh $aline 'jps';
done < tempfile
ssh
ループは、 and のみを最初に呼び出した後に中断されます( and@node1
なし)。@node2
`@node3
舞台裏で何が起こったのか尋ねています(未定義の動作のように見えます)?また、while ループを壊さずに同じ機能を実現するにはどうすればよいでしょうか。