shell 脚本不迭代文件的行[重复]

w9apscun  于 2023-02-24  发布在  Shell
关注(0)|答案(1)|浏览(130)
    • 此问题在此处已有答案**:

While loop stops reading after the first line in Bash(5个答案)
4天前关闭。
我需要让我的脚本遍历一个服务器列表,但是我做不到。
假设192.168.0.1192.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

如何成功地浏览整个服务器列表?

whhtz7ly

whhtz7ly1#

正如注解部分所指出的,ssh命令正在消耗您的脚本stdin
-n选项添加到ssh应可防止此情况(请参见this)。
因此,更改这一行:

if ssh "$server" "[ -d /path/to/mount/point ]"; then

收件人:

if ssh -n "$server" "[ -d /path/to/mount/point ]"; then

相关问题