어떤 이유로 이 스크립트(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