- 此问题在此处已有答案**:
While loop stops reading after the first line in Bash(5个答案)
4天前关闭。
我需要让我的脚本遍历一个服务器列表,但是我做不到。
假设192.168.0.1
和192.168.0.2
列在脚本将读取的文件中,则在执行脚本时,仅成功处理第一行(192.168.0.1
),第二行(192.168.0.2
)不发生任何变化。
这是一个脚本:
#!/bin/bash
# Read in server names from afile
while read -r server; do
# Check if server is reachable
if ping -c 1 "$server" &> /dev/nul l; then
echo "Server $server is reachable."
# Check if mount point exists
if ssh "$server" "[ -d /path/to/mount/point ]"; then
echo "Mount point exists on server $server."
else
echo "Mount point does not exist on server $server."
fi
else
echo "Server $server is not reachable."
fi
done < servers.txt
如何成功地浏览整个服务器列表?
1条答案
按热度按时间whhtz7ly1#
正如注解部分所指出的,
ssh
命令正在消耗您的脚本stdin
。将
-n
选项添加到ssh
应可防止此情况(请参见this)。因此,更改这一行:
收件人: