ファイルをスキャンする次のスクリプトがあります。各行はリモートノードのホスト名です。
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 ループを壊さずに同じ機能を実現するにはどうすればよいでしょうか。