Meu script fetch_remote_work.sh
é bastante lento porque se conecta a uma rede. Preciso executá-lo muitas vezes até que funcione.
./fetch_remote_work.sh
while [ $? -ne 0 ]
do
./fetch_remote_work.sh
done
Obviamente, isso funciona bem. No entanto, não gosto de ser obrigado a ligar primeiro ./fetch_remote_work.sh
. Eu sei que em outras línguas, comophp, existe umfazer enquantoloop que executa pelo menos a primeira iteração. O que seria muito limpo se existisse emfesta
Então minha pergunta é: existe uma maneira mais limpa do que a que eu fiz?
Responder1
Use o próprio comando como condicional para a while
construção.
while ! ./fetch_remote_work.sh; do :; done
Responder2
Se você quiser executar algoatétem 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 uma linha)
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
Este loop não faz "nada" (executa o:
construídas em)atéo script fetch_remote_work.sh retorna 0.
Responder3
Altere a primeira linha para false
, forçando a condição desejável para a primeira iteração.