GNU/Linux >> Tutoriales Linux >  >> Linux

Bash break:cómo salir de un bucle

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 y until bucles.
  • El select comando.

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 i a 0 .
  • Línea 5 inicia el while cí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 if declaración. Cuando la variable es igual a dos ("$i" == 2 ), el programa sale del while bucle usando Bash break declaració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 select declaración imprime este mensaje después de enumerar todas las opciones y después de cada suposición incorrecta.
  • Línea 5 inicia el select y define las opciones como números 1 a 10 .
  • 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.


Linux
  1. Bash + ¿Cómo salir del script secundario y del script principal en ambas ocasiones?

  2. ¿Cómo evaluará Bash el siguiente código?

  3. Cómo alimentar consultas mysql desde bash

  4. ¿Cómo divido un literal de cadena extremadamente largo en bash?

  5. ¿Cómo puedo obtener valores únicos de una matriz en Bash?

Cómo comentar en Bash

Bash continue:Cómo reanudar un bucle

Golpear mientras se repite

Golpear hasta bucle

Bash romper y continuar

¿Cómo saber si estoy en una sesión Tmux desde un script Bash?