# wait for host to become online
while true; do
ping host -c 1 -w 3 > /dev/null && break;
sleep 1
done
当我按Ctrl+时C,ping 会收到它并以退出代码 1 退出(与主机关闭相同)。我该如何正确地做到这一点?
解决方法:sleep 1 || break
按 ^C 两次。
答案1
trap "exit 1" INT
while true; do
ping host -c 1 -w 3 > /dev/null && break;
sleep 1
done
trap - INT # restore handler
答案2
只是不要把你的循环写得那么奇怪。
until ping host -c 1 -w 3
do sleep 1
done >/dev/null
执行上述操作将需要在最多^C
连续两次击键即可退出循环 - 这是因为sleep
.但如果你再分层一次:
sh -c '
until ping host -c 1 -w 3
do sleep 1
done' >/dev/null
...你甚至不需要这两个。