【问题标题】:bash while loop read only one linebash while 循环只读取一行
【发布时间】:2018-09-05 14:38:49
【问题描述】:

我对此代码有疑问。

  while IFS='' read -r line
  do

    echo "host: "$line

    IP_addr=$(echo $line |cut -d" " -f1)
    host=$(echo $line | cut -d" " -f2)

    FILE_CHECK=$(ssh -o ConnectTimeout=10 $USER@$IP_addr "find $SRC_FILE -mtime 0")

    echo $FILE_CHECK

    ((host_num+=1))


    echo "" #empty line
  done < "$SERVER_LIST"

  echo $host_num

其中变量服务器列表包含服务器文件的路径

192.168.1.1 app1
192.168.1.2 app2
192.168.1.3 app3 

脚本读取第一行,成功连接主机然后退出。当我尝试遍历文件并且只有回显行循环读取所有行时。

【问题讨论】:

  • 注意你可以说while read -r ip host 直接获取ip_addr 和host 而不是从$line 拉取。

标签: bash while-loop


【解决方案1】:

ssh 从标准输入读取,所以它会吃掉文件的其余部分。使用 -n 选项运行 ssh 以将其输入重定向到 /dev/null。

【讨论】:

    猜你喜欢
    • 2019-12-16
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    相关资源
    最近更新 更多