si desea que el bucle while para detenerse después de alguna condición, y su comando foo
devuelve un valor distinto de cero cuando se cumple esta condición, entonces puede obtener el lazo para romper así:
while foo; do echo 'sleeping...'; sleep 5; done;
Por ejemplo, si el comando foo
está borrando cosas en lotes, y devuelve 1 cuando no queda nada por eliminar.
Esto funciona bien si tiene un script personalizado que necesita ejecutar un comando muchas veces hasta alguna condición. Escriba la secuencia de comandos para salir con 1
cuando se cumpla la condición y salga con 0
cuando se debe volver a ejecutar.
Por ejemplo, supongamos que tiene un script en Python que actualiza batch_update.py
100 filas en una base de datos y devuelve 0
si hay más de actualizar y 1
si no hay más. El siguiente comando le permitirá actualizar las filas 100 a la vez con una pausa de 5 segundos entre las actualizaciones:
while batch_update.py; do echo 'sleeping...'; sleep 5; done;
Reemplace las líneas nuevas con punto y coma. Lo mismo funciona para bucles for. – Tom
@Tom: eso no siempre funciona. después del do, debe tener el primer comando, no un punto y coma –