Use o próprio comando como condicional para a construção while
.
while ! ./fetch_remote_work.sh; do :; done
Meu script fetch_remote_work.sh
é bastante lento porque se conecta a uma rede.
Eu preciso executá-lo muitas 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 chamar o primeiro ./fetch_remote_work.sh
.
Eu sei que em outros idiomas, como php , há um do while loop que executa pelo menos a primeira iteração. O que seria muito claro se existisse em bash
Então, minha pergunta é: existe uma maneira mais limpa do que o que eu fiz?
Se você quiser executar algo até que tenha um código de retorno zero,
until [ $RANDOM -eq 42 ]
do
echo looking for the answer to life, the universe, and everything
done
(ou como um one-liner)
until [ $RANDOM -eq 42 ]; do echo looking for the answer to life, the universe, and everything; done
Para o seu exemplo:
until ./fetch_remote_work.sh; do :; done
Esse loop não faz "nada" (execute o :
builtin ) < em> 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.
Tags bash