Introducción
En las secuencias de comandos de Bash, un break instrucción ayuda a proporcionar control dentro de las instrucciones de bucle. En lugar de esperar hasta la condición final, un break La declaración ayuda a salir de un ciclo antes de que ocurra la condición final.
Las sentencias de bucle de control (break y continuar) se combinan lógicamente con sentencias condicionales como if elif else para crear situaciones especiales dentro de los bucles.
Este tutorial te enseña a usar el break declaración de manera eficiente en los bucles de secuencias de comandos de Bash.
Requisitos previos
- Una máquina con macOS o Linux.
- Conceptos básicos de secuencias de comandos de Bash (como escribir y ejecutar una secuencia de comandos).
- Un editor de texto para escribir los ejemplos de secuencias de comandos de Bash, como nano.
Declaración de ruptura de bash
El break finaliza la iteración del bucle actual y sale del bucle. Cuando se combina con una condición, break ayuda a proporcionar un método para salir del ciclo antes de que ocurra el caso final.
El break de Bash Las sentencias siempre se aplican a los bucles.
La sintaxis es:
break <integer>
El valor entero es opcional y es 1 por defecto. El número define la profundidad de la break para bucles anidados. Por lo tanto, para salir de un bucle for anidado, use break 2 .
Ejemplos de ruptura de bash
Los ejemplos a continuación demuestran cómo salir de diferentes tipos de bucle usando el break declaración. Los ejemplos incluyen:
- El estándar
while, para yuntilbucles. - El
selectcomando.
Cada ejemplo de secuencia de comandos de Bash a continuación viene con una explicación.
Salir de un bucle temporal
Usa el break instrucción para salir de un while bucle cuando se da cuenta de una condición particular. El siguiente script usa un break dentro de un while bucle:
#!/bin/bash
i=0
while [[ $i -lt 11 ]]
do
if [[ "$i" == '2' ]]
then
echo "Number $i!"
break
fi
echo $i
((i++))
done
echo "Done!"
Cada línea del script hace lo siguiente:
- Línea 3 define y establece la variable
ia0. - Línea 5 inicia el
whilecírculo. La condición final es cuando la variable es menor que once ($i -lt 11). - Línea 7 realiza una verificación usando un
ifdeclaración. Cuando la variable es igual a dos ("$i" == 2), el programa sale delwhilebucle usando Bashbreakdeclaración en línea 10 . En ese caso, el código salta a la línea 16 . Si la variable es un número diferente, la secuencia de comandos continúa como se esperaba en línea 12 .
Ejecute el script para ver los resultados.
El programa enumera números hasta 2 y sale del script.
Uso de pausa interior para bucles
Un for loop incrementa una variable automáticamente. Para agregar una declaración condicional y salir de for bucle temprano, use un break declaración. El siguiente código muestra un ejemplo del uso de un break dentro de un for bucle:
#!/bin/bash
for i in {1..10}
do
if [[ $i == '2' ]]
then
echo "Number $i!"
break
fi
echo "$i"
done
echo "Done!"
Cuando el valor entero es igual a dos ($i == '2' ), el programa imprime un mensaje y sale del for bucle gracias al break declaración.
Como resultado, ejecutar el script finaliza el programa cuando la variable i llega a dos y salta a la última línea de código.
Salir de un bucle hasta
Un Bash until loop es una de las tres construcciones fundamentales de loop. Agrega un break declaración para controlar el flujo del programa y salir del bucle en una condición diferente.
A continuación se muestra un programa de ejemplo:
#!/bin/bash
i=0
until [[ $i -gt 10 ]]
do
if [[ $i -eq 2 ]]
then
echo "Number $i!"
break
fi
echo $i
((i++))
done
echo "Done!"
Aunque el until el bucle contiene una condición final ($i -gt 10 ), el cuerpo del ciclo contiene otra condición ($i -eq 2 ). Dado que la segunda condición ocurre antes que la primera, el programa ingresa el if el cuerpo de la instrucción, que contiene una instrucción Bash break para salir del bucle.
Ejecutar el script demuestra que el programa finaliza cuando la variable i alcanza el valor 2 .
Usar la pausa dentro de un bucle seleccionado
El select El comando crea menús y se comporta como un bucle infinito, aunque no es una de las construcciones de bucle principales. Para salir de select elegantemente, haga un caso para el cual el programa finaliza y use break para salir del bucle.
El siguiente código muestra un juego de adivinanzas de números textuales usando un select declaración:
#!/bin/bash/
PS3="Guess my favorite number: "
select i in {1..10}
do
echo "Selected number: $i"
if [[ $REPLY -eq 2 ]]
then
echo "Correct! $i is my favorite. Thanks for playing!"
break
fi
echo "Not my favorite. Try again!"
done
El código hace lo siguiente:
- Línea 3 muestra el mensaje instructivo. El
selectdeclaración imprime este mensaje después de enumerar todas las opciones y después de cada suposición incorrecta. - Línea 5 inicia el
selecty define las opciones como números1a10. - Línea 8 comprueba si el número seleccionado es igual a
2, que es la conjetura correcta. Si se aprueba la verificación, la declaración de ruptura de Bash ayuda a salir del ciclo y finaliza el juego.
Ejecute el script para jugar el juego de adivinanzas de números.
Ingrese diferentes valores para ver los resultados.
Para desarrollar aún más la secuencia de comandos, intente agregar un elif declaración para verificar entradas fuera de rango o cambiarla a una declaración de caso para considerar varias situaciones de entrada.