Martynas'ın cevabının başka bir basitleştirmesi:
until ping -c1 www.google.com >/dev/null 2>&1; do :; done
ping'in döngü testi olarak kullanıldığına dikkat edin; başarılı olur olmaz döngü sona erer. Döngü gövdesi boş, :
sözdizimi hatasını önlemek için kullanılan " " null komutuyla .
Güncelleme: Control-C'nin ping döngüsünden temiz bir şekilde çıkmasını sağlamanın bir yolunu düşündüm. Bu, döngüyü arka planda çalıştıracak, kesme (Control-C) sinyalini yakalayacak ve gerçekleşirse arka plan döngüsünü öldürecektir:
ping_cancelled=false # Keep track of whether the loop was cancelled, or succeeded
until ping -c1 "$1" >/dev/null 2>&1; do :; done & # The "&" backgrounds it
trap "kill $!; ping_cancelled=true" SIGINT
wait $! # Wait for the loop to exit, one way or another
trap - SIGINT # Remove the trap, now we're done with it
echo "Done pinging, cancelled=$ping_cancelled"
Biraz dolambaçlı, ancak döngü iptal edilebilir olmasını istiyorsanız hile yapmalı.