Existe el while condition; do ...; done
ciclo bien conocido , pero ¿existe un do... while
ciclo de estilo que garantice al menos una ejecución del bloque?
shell
control-flow
Shawn J. Goff
fuente
fuente
Respuestas:
Una versión muy versátil de a
do ... while
tiene esta estructura:Un ejemplo es:
Tal como está (sin valor establecido para
i
) el bucle se ejecuta 20 veces.Sin comentar la línea que se establece
i
en 16i=16
, el bucle se ejecuta 4 veces.Para
i=16
,i=17
,i=18
yi=19
.Si i se establece en (digamos 26) en el mismo punto (el inicio), los comandos aún se ejecutan la primera vez (hasta que se pruebe el comando loop break).
La prueba por un tiempo debe ser veraz (estado de salida de 0).
La prueba debe revertirse para un ciclo hasta, es decir: ser falso (estado de salida no 0).
Una versión POSIX necesita varios elementos cambiados para funcionar:
fuente
set -e
algo que falla dentro del bloque de condición while no va a detener la ejecución: por ejemplo,set -e; while nonexistentcmd; true; do echo "SHiiiiit"; exit 3; done
-> sucede una mierda. Entonces, si usa esto, debe tener mucho cuidado con el manejo de errores, es decir, ¡encadenar todos los comandos con&&
!No hay un bucle do ... while o do ... while, pero se puede lograr lo mismo de esta manera:
para hasta:
fuente