theIp=""
#1
echo $theIp | while read ip; do
ssh -tt root@$ip
exit
done
#2
while read ip; do
ssh root@$ip
exit
done < <(echo $theIp)
#3
while true; do
ssh root@$theIp
exit
done
以上3方式关于连接while语句中的任何主机,但只有最后一个成功,为什么前两个什么都不做?
答案 0 :(得分:2)
ssh
正在吃掉你的循环输入。可能在这种情况下,当ssh
会话从中获取EOF时会退出。这可能是原因,但一些输入也可能导致它退出。您必须通过指定< /dev/null
或使用-n
来重定向其输入:
ssh -n "root@$ip"
ssh "root@$ip" < /dev/null
这可能也适用于-tt
,因为它不知何故是独立的。试试吧。
如果您正在使用支持read -u
的Bash或类似shell,您还可以为您的文件指定不同的fd
。
while read -u 4 ip; do
ssh root@$ip
exit
done 4< <(echo $theIp)