Existe el while condition; do ...; doneciclo bien conocido , pero ¿existe un do... whileciclo 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 ... whiletiene 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
ien 16i=16, el bucle se ejecuta 4 veces.Para
i=16,i=17,i=18yi=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 -ealgo 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