このbashスクリプトにはどのような問題がありますか? [コピー]

このbashスクリプトにはどのような問題がありますか? [コピー]

何らかの理由で、このスクリプト(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

おすすめ記事