Bash-遍历文件以操作命令

时间:2018-11-02 15:56:06

标签: bash shell loops unix

我有一个脚本,可以将ssh切换到其他vms并运行命令。
工作代码如下:

  declare -a envname=("hostname1" "hostname2")
    # Looping through array
    for i in "${envname[@]}"
    do
       # loging on to environments, running a df command
       ssh "$i" "df -h" 
    done

这很好用,但是随着更多的主机名被添加到列表中,代码将变得混乱。因此,我想要一个.txt文件来替换数组。文本文件如下所示:

hostname1
hostname2
hostname3

这是我尝试使用的.txt文件:

sed '/^[ \t\r\n]*$/d' hosts.txt | while read hosts; 
     do
         echo "$hosts"  
         ssh "$hosts" "df -h" 

done

“ echo $ hosts”打印出看起来不错的每个主机名,但是我在下一行代码中收到错误:

"name or service not knownname "hostname"" 

我认为这是某种空格/行距问题,因为主机名在前面的命令中看起来不错。 sed '/^[ \t\r\n]*$/d行是我删除空白的尝试,但这不起作用。

0 个答案:

没有答案