bash 脚本中的 ssh 退出循环

Nit*_*hin 6 ssh bash stdin

我正在尝试在几个远程主机上运行一些命令。我在一个文件中有他们的 ip 列表ips.txt(每行一个 ip)。

#!/bin/bash

while IFS= read -r wip; do
    echo $wip
    ssh root@$wip "pkill pgm; cd /root/pgm; nohup ./pgm  > /dev/null 2>&1 &"
    echo "$wip end"
done < ips.txt
Run Code Online (Sandbox Code Playgroud)

我正在运行上面的脚本。但问题是在读取第一个 ip 后循环退出。但如果我删除 ssh 行,它会打印所有 ip。

Cyr*_*rus 8

ssh从标准输入 (ips.txt) 读取所有内容。

代替

ssh
Run Code Online (Sandbox Code Playgroud)

ssh -n
Run Code Online (Sandbox Code Playgroud)

看:man ssh