이 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

관련 정보