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 euntil
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
a0
. - 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 dawhile
loop usando labreak
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 numeri1
a10
. - 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.