我正在运行一个带有 while 循环的 shell 脚本,它因以下错误而退出,我该如何避免它或捕获错误并让循环继续?即我该如何处理异常
stty: standard input: Invalid argument
以下是我正在尝试的脚本,但它在第一次迭代后退出循环。
hfile=/tmp/prty.txt
while read property
do
hostname=`echo $property | awk '{print $1}'`
echo $hostname
ssh -l gger $hostname ". <userhome>/.bash_profile; ggsci -v; exit << EOF > /tmp/gg.txt
EOF"
done < $hfile
file hfile
==========
user1 pas1
user2 pas2
user3 pas3
答案1
现在我喝了更多的咖啡因,我可以看到你收到的错误消息是红鲱鱼。
执行 ssh 时,它会获得对 stdin 的控制权,并完全使用 stdin。这意味着它会读取数据,$hfile
这又意味着在循环一次迭代后,while 结束。
您可以使用-n
切换到 ssh 来解决此问题。
ssh -n -l gger $hostname ". <us...
-n 从 /dev/null 重定向 stdin(实际上,阻止从 stdin 读取)...