Introducción
Los bucles le permiten ejecutar uno o más comandos varias veces hasta que se cumpla una determinada condición. Sin embargo, a veces puede ser necesario cambiar el flujo del ciclo y terminar el ciclo o simplemente la iteración actual.
En Bash, las break
y continue
permiten controlar la ejecución del bucle. (lazo)
Declaración de Bash Break
La break
finaliza el ciclo actual y pasa el control del programa al comando que sigue al ciclo terminado. Se utiliza para salir de la for
, while
, until
, o bucle select
. La sintaxis de la break
tiene la siguiente forma:
break [n]
[n]
es un argumento opcional y debe ser mayor o igual que 1. Cuando [n]
, se termina el n-ésimo ciclo de cierre. break 1
es equivalente a break
.
Para comprender mejor cómo usar la break
, veamos los siguientes ejemplos.
En la siguiente secuencia de comandos, el while
de ejecución del bucle será abortado cuando el elemento iterado actual es igual a 2
:
i=0
while [[ $i -lt 5 ]]
do
echo "Number: $i"
((i++))
if [[ $i -eq 2 ]]; then
break
fi
done
echo 'All Done!'
Number: 0
Number: 1
All Done!
A continuación, se muestra un ejemplo del uso de la instrucción break
for
Cuando no se proporciona el argumento [n]
break
termina el ciclo de cierre más interno. Los bucles externos no se terminan:
for i in {1..3}; do
for j in {1..3}; do
if [[ $j -eq 2 ]]; then
break
fi
echo "j: $j"
done
echo "i: $i"
done
echo 'All Done!'
j: 1
i: 1
j: 1
i: 2
j: 1
i: 3
All Done!
Si desea salir del circuito externo, use el break 2
. El argumento 2
le dice a break
que termine el segundo ciclo de cierre:
for i in {1..3}; do
for j in {1..3}; do
if [[ $j -eq 2 ]]; then
break 2
fi
echo "j: $j"
done
echo "i: $i"
done
echo 'All Done!'
j: 1
All Done!
Declaración de Bash continua
La continue
omite los comandos restantes dentro del cuerpo del bucle que encierra la iteración actual y pasa el control del programa a la siguiente iteración del bucle.
La sintaxis de la continue
es la siguiente:
continue [n]
El [n]
es opcional y puede ser mayor o igual a 1. Cuando se da [n]
, se reanuda el n-ésimo ciclo circundante. continue 1
es equivalente a continue
.
En el siguiente ejemplo, una vez que el artículo iterado actual es igual a 2
, la continue
hará que la ejecución regrese al comienzo del ciclo y continúe con la siguiente iteración.
i=0
while [[ $i -lt 5 ]]; do
((i++))
if [[ "$i" == '2' ]]; then
continue
fi
echo "Number: $i"
done
echo 'All Done!'
Number: 1
Number: 3
Number: 4
Number: 5
All Done!
El siguiente script imprime números del 1
al 50
que son divisibles por 9
.
Si un número no es divisible por 9
, la continue
omite el echo
y pasa el control a la siguiente iteración del ciclo.
for i in {1..50}; do
if [[ $(( $i % 9 )) -ne 0 ]]; then
continue
fi
echo "Divisible by 9: $i"
done
Divisible by 9: 9
Divisible by 9: 18
Divisible by 9: 27
Divisible by 9: 36
Divisible by 9: 45
Conclusión
Los bucles son uno de los conceptos fundamentales de los lenguajes de programación. En lenguajes de scripting como Bash, los bucles son útiles para automatizar tareas repetitivas.
La break
se utiliza para salir del ciclo actual. La continue
se usa para salir de la iteración actual de un bucle y comenzar la siguiente iteración.