Mi script fetch_remote_work.sh
es bastante lento porque se conecta a una red. Necesito ejecutarlo muchas veces hasta que funcione.
./fetch_remote_work.sh
while [ $? -ne 0 ]
do
./fetch_remote_work.sh
done
Obviamente esto funciona bien. Sin embargo, no me gusta verme obligado a llamar al primero ./fetch_remote_work.sh
. Sé que en otros idiomas comoPHP, hay unhacer mientrasbucle que ejecuta al menos la primera iteración. Que estaría muy limpio si existiera enintento
Entonces mi pregunta es: ¿existe una forma más limpia que la que hice?
Respuesta1
Utilice el comando en sí como condicional para la while
construcción.
while ! ./fetch_remote_work.sh; do :; done
Respuesta2
Si quieres ejecutar algohastatiene un código de retorno cero,
until [ $RANDOM -eq 42 ]
do
echo looking for the answer to life, the universe, and everything
done
(o como una sola línea)
until [ $RANDOM -eq 42 ]; do echo looking for the answer to life, the universe, and everything; done
Para tu ejemplo:
until ./fetch_remote_work.sh; do :; done
Este bucle no hace "nada" (ejecuta el:
incorporado)hastael script fetch_remote_work.sh devuelve 0.
Respuesta3
Cambie la primera línea a false
, forzando la condición deseable para la primera iteración.