何らかの理由で、このスクリプト(RHEL v6.9で実行)はhost_fileの最初の行のみを処理します。
#!/bin/bash
process()
{
ssh $host ls
}
while IFS= read -r host
do
echo "Running $host"
process
echo "DONE $host"
done < host_file
#-------End of Script-----------------
$ cat host_file
server1
server2
答え1
sshは残りの標準入力を食べます。読み込み中にループに別のファイル記述子を使用します。
while IFS= read -u4 -r host
do
echo "Running $host"
process
echo "DONE $host"
done 4< host_file