trap "exit 1" INT
while true; do
ping host -c 1 -w 3 > /dev/null && break;
sleep 1
done
trap - INT # restore handler
# wait for host to become online
while true; do
ping host -c 1 -w 3 > /dev/null && break;
sleep 1
done
Quando pressiono Ctrl + C , o ping o recebe e sai com o código de saída 1 (o mesmo que se o host estivesse desligado). Como faço isso corretamente?
Solução alternativa: sleep 1 || break
e pressionando ^ C duas vezes.
Apenas não escreva o seu loop tão estranho.
until ping host -c 1 -w 3
do sleep 1
done >/dev/null
Fazer o que foi mencionado acima exigirá mais mais dois pressionamentos de tecla ^C
em uma linha para sair do loop - e isso é por causa de sleep
. Mas se você colocar mais uma vez:
sh -c '
until ping host -c 1 -w 3
do sleep 1
done' >/dev/null
... você não precisará nem dos dois.
Tags signals shell-script