由于某种原因,此脚本(在 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-read 循环使用不同的文件描述符:
while IFS= read -u4 -r host
do
echo "Running $host"
process
echo "DONE $host"
done 4< host_file