Às vezes pode ser necessário persistir na execução de um comando no Linux, até que ele retorne com sucesso.
Este código pode ser executado na linha de comando ou dentro de um script.
O comando ping é comumente usado dentro de um laço (ou loop) while, quando queremos ser avisados de que um certo nó na rede já se encontra online e conectado.
Há várias outras situações em que pode ser desejável manter o sistema operacional na tentativa de execução de um comando — até ele “dar certo”.
Veja um exemplo de uso com o ping:
while true; do ping -c 1 192.168.1.100 && break; done;
PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.
From 192.168.1.4 icmp_seq=1 Destination Host Unreachable
--- 192.168.1.100 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms
PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.
From 192.168.1.4 icmp_seq=1 Destination Host Unreachable
--- 192.168.1.100 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms
PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.
From 192.168.1.4 icmp_seq=1 Destination Host Unreachable
...
Se tiver interesse em ler mais sobre o uso de loops no Bash, leia Exemplos de laços na Bash shell.