while read NAME HOST CMD
do
ssh $NAME@$HOST "$CMD"
done
SSH を実行すると、標準入力がそちらに振り向けられるため、read で読んだ1行のみならず、ファイル全体が SSH に渡されてしまう。従って、SSH を実行した後はもう読める行がないので while ループは1回で終了してしまう。
これを防ぐには、ssh に -n オプションを付け、/dev/null をリダイレクトし、標準入力をリダイレクトしないようにする。
===== こちらだとOK =====
while read NAME HOST CMD
do
ssh -n $NAME@$HOST "$CMD"
done
{{tag>bash ssh while}}