Shell 脚本 while 只循环一次
Shell script while only loops once
我想通过ssh获取所有服务器的时间,但是我的脚本只循环一次然后就退出了,这是什么原因?
servers.txt
192.168.1.123
192.168.1.124
192.168.1.125
192.168.1.126
gettime.sh
#!/bin/bash
while read host
do
ssh root@${host} date
done < "servers.txt"
输出
Tue Feb 3 09:56:54 CST 2015
发生这种情况是因为 ssh
开始读取您打算用于循环的输入。您可以添加 < /dev/null
来防止它:
#!/bin/bash
while read host
do
ssh root@${host} date < /dev/null
done < "servers.txt"
ffmpeg
和mplayer
也有同样的情况,可以用同样的方法解决。
PS:shellcheck:
会自动捕获此问题和其他问题
In yourscript line 4:
ssh root@${host} date
^-- SC2095: Add < /dev/null to prevent ssh from swallowing stdin.
我想通过ssh获取所有服务器的时间,但是我的脚本只循环一次然后就退出了,这是什么原因?
servers.txt
192.168.1.123
192.168.1.124
192.168.1.125
192.168.1.126
gettime.sh
#!/bin/bash
while read host
do
ssh root@${host} date
done < "servers.txt"
输出
Tue Feb 3 09:56:54 CST 2015
发生这种情况是因为 ssh
开始读取您打算用于循环的输入。您可以添加 < /dev/null
来防止它:
#!/bin/bash
while read host
do
ssh root@${host} date < /dev/null
done < "servers.txt"
ffmpeg
和mplayer
也有同样的情况,可以用同样的方法解决。
PS:shellcheck:
会自动捕获此问题和其他问题In yourscript line 4:
ssh root@${host} date
^-- SC2095: Add < /dev/null to prevent ssh from swallowing stdin.