GNU/Linux >> Linux Esercitazione >  >> Linux

Bash break:come uscire da un loop

Introduzione

Nello scripting Bash, un break istruzione aiuta a fornire il controllo all'interno di istruzioni di ciclo. Invece di aspettare fino alla condizione finale, un break istruzione aiuta a uscire da un ciclo prima che si verifichi la condizione finale.

Le istruzioni del ciclo di controllo (break e continua) combinare logicamente con istruzioni condizionali come if elif else per creare situazioni speciali all'interno di loop.

Questo tutorial ti insegna come usare il break istruzione in modo efficiente nei cicli di script Bash.

Prerequisiti

  • Una macchina che esegue macOS o Linux.
  • Nozioni di base sugli script Bash (come scrivere ed eseguire uno script).
  • Un editor di testo per scrivere esempi di script Bash, come nano.

Dichiarazione sulla pausa della festa

La break termina l'iterazione del ciclo corrente ed esce dal ciclo. Se combinato con una condizione, break aiuta a fornire un metodo per uscire dal ciclo prima che si verifichi il caso finale.

La break di Bash le istruzioni si applicano sempre ai loop.

La sintassi è:

break <integer>

Il valore intero è facoltativo ed è 1 per impostazione predefinita. Il numero definisce la profondità della break per loop nidificati. Pertanto, per interrompere un ciclo for nidificato, utilizza break 2 .

Esempi di pausa Bash

Gli esempi seguenti mostrano come uscire da diversi tipi di loop utilizzando la break dichiarazione. Gli esempi includono:

  • Lo standard while , per e until loop.
  • Il select comando.

Ogni esempio di script Bash di seguito viene fornito con una spiegazione.

Interrompere da un po' Loop

Usa la break istruzione per uscire da un while ciclo quando si realizza una particolare condizione. Lo script seguente utilizza un break all'interno di un while ciclo:

#!/bin/bash

i=0

while [[ $i -lt 11 ]] 
do
        if [[ "$i" == '2' ]]
        then
                echo "Number $i!"
                break
        fi
        echo $i
        ((i++))
done

echo "Done!"

Ciascuna riga dello script esegue le seguenti operazioni:

  • Riga 3 definisce e imposta la variabile i a 0 .
  • Riga 5 avvia il while ciclo continuo. La condizione finale è quando la variabile è inferiore a undici ($i -lt 11 ).
  • Riga 7 esegue un controllo utilizzando un if dichiarazione. Quando la variabile è uguale a due ("$i" == 2 ), il programma esce da while loop usando la break di Bash dichiarazione alla riga 10 . In tal caso, il codice salta alla riga 16 . Se la variabile è un numero diverso, lo script continua come previsto sulla riga 12 .

Esegui lo script per vedere i risultati.

Il programma elenca i numeri fino a 2 ed esce dallo script.

Utilizzo di break Inside for Loops

Un for loop incrementa automaticamente una variabile. Per aggiungere un'istruzione condizionale e uscire da un for loop in anticipo, usa una break dichiarazione. Il codice seguente mostra un esempio di utilizzo di un break all'interno di un for ciclo:

#!/bin/bash

for i in {1..10}
do
        if [[ $i == '2' ]]
        then
                echo "Number $i!"
                break
        fi
        echo "$i"
done

echo "Done!"

Quando il valore intero è uguale a due ($i == '2' ), il programma stampa un messaggio ed esce dal for loop grazie alla break dichiarazione.

Di conseguenza, l'esecuzione dello script termina il programma quando la variabile i raggiunge due e salta all'ultima riga di codice.

Interruzione da un ciclo fino a

A Bash until loop è uno dei tre costrutti di loop fondamentali. Aggiungi un break istruzione per controllare il flusso del programma e uscire dal ciclo in una condizione diversa.

Di seguito è riportato un programma di esempio:

#!/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!"

Sebbene il until loop contiene una condizione finale ($i -gt 10 ), il corpo del ciclo contiene un'altra condizione ($i -eq 2 ). Poiché la seconda condizione si verifica prima della prima, il programma inserisce il if corpo dell'istruzione, che contiene un'istruzione di interruzione Bash per uscire dal ciclo.

L'esecuzione dello script dimostra che il programma termina quando la variabile i raggiunge il valore 2 .

Utilizzo dell'interruzione all'interno di un ciclo selezionato

Il select Il comando crea menu e si comporta come un ciclo infinito, anche se non è uno dei costrutti del ciclo primario. Per uscire dal select dichiarazione elegante, crea un caso per il quale il programma termina e usa break per lasciare il ciclo.

Il codice seguente mostra un gioco testuale di indovinare numeri utilizzando una select dichiarazione:

#!/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

Il codice esegue le seguenti operazioni:

  • Riga 3 visualizza il messaggio di istruzioni. Il select stampa questo messaggio dopo aver elencato tutte le opzioni e dopo ogni ipotesi errata.
  • Riga 5 avvia la select istruzione e definisce le opzioni come numeri 1 a 10 .
  • Riga 8 controlla se il numero selezionato è uguale a 2 , che è l'ipotesi corretta. Se il controllo passa, l'istruzione Bash break aiuta a uscire dal ciclo e termina il gioco.

Esegui lo script per giocare a indovinare i numeri.

Immettere valori diversi per vedere i risultati.

Per sviluppare ulteriormente lo script, prova ad aggiungere un elif istruzione per verificare la presenza di input fuori intervallo o cambiarla in un'istruzione case per considerare varie situazioni di input.


Linux
  1. Come fermare lo script Loop Bash nel terminale?

  2. Come sapere se sono in una sessione Tmux da uno script Bash?

  3. Bash + Come uscire dallo script secondario e dallo script principale in entrambi i casi?

  4. In che modo Bash valuterà il seguente codice?

  5. Come ottenere lo stato di uscita un ciclo in bash

Come commentare in Bash

Bash continua:come riprendere un ciclo

Bash mentre Loop

Bash fino a Loop

Bash pausa e continua

come ottenere elementi dalla lista in bash?