Execute um script muito lento até ter sucesso

Execute um script muito lento até ter sucesso

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, como, existe umfazer enquantoloop que executa pelo menos a primeira iteração. O que seria muito limpo se existisse em

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 whileconstruçã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.

informação relacionada