Meu script fetch_remote_work.sh
é bastante lento porque se conecta a uma rede. Preciso executá-lo várias vezes até que funcione.
./fetch_remote_work.sh
while [ $? -ne 0 ]
do
./fetch_remote_work.sh
done
Isso obviamente funciona bem. No entanto, não gosto de ser obrigado a ligar para o primeiro ./fetch_remote_work.sh
. Eu sei que em outras linguagens como php , existe um loop do while que executa pelo menos a primeira iteração. O que seria muito limpo se existisse no bash
Então, minha pergunta é: existe uma maneira mais limpa do que a que eu fiz?
Use o próprio comando como condicional para a
while
construção.while ! ./fetch_remote_work.sh; do :; done
Se você quiser executar algo até que tenha um código de retorno zero,
(ou como um one-liner)
Para o seu exemplo:
Este loop não faz "nada" (executa o
:
builtin ) até que o script fetch_remote_work.sh retorne 0.Altere a primeira linha para
false
, forçando a condição desejável para a primeira iteração.