I loop ti consentono di eseguire uno o più comandi più volte finché non viene soddisfatta una determinata condizione. Tuttavia, a volte potrebbe essere necessario modificare il flusso del ciclo e terminare il ciclo o solo l'iterazione corrente.
In Bash, break
e continue
le istruzioni ti consentono di controllare l'esecuzione del ciclo.
Bash break
Dichiarazione #
La break
termina il ciclo corrente e passa il controllo del programma al comando che segue il ciclo terminato. Viene utilizzato per uscire da un for
, while
, until
o select
loop.sLa sintassi di break
dichiarazione assume la forma seguente:
break [n]
[n]
è un argomento facoltativo e deve essere maggiore o uguale a 1. Quando [n]
viene fornito, si esce dall'n-esimo anello di chiusura. break 1
è equivalente a break
.
Per capire meglio come utilizzare il break
dichiarazione, diamo un'occhiata ai seguenti esempi.
Nello script sottostante, l'esecuzione del while
il ciclo verrà interrotto una volta che l'elemento iterato corrente è uguale 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!
Ecco un esempio di utilizzo di break
istruzione all'interno di for
nidificato loop.
Quando l'argomento [n]
non viene fornito, break
termina il ciclo di chiusura più interno. I loop esterni non sono terminati:
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!
Se vuoi uscire dal ciclo esterno, usa break 2
. Argomento 2
dice a break
per terminare il secondo ciclo di chiusura:
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!
Bash continue
Dichiarazione #
Il continue
salta i comandi rimanenti all'interno del corpo del ciclo di chiusura per l'iterazione corrente e passa il controllo del programma all'iterazione successiva del ciclo.
La sintassi di continue
dichiarazione è la seguente:
continue [n]
Il [n]
argomento è facoltativo e può essere maggiore o uguale a 1. Quando [n]
è dato, viene ripreso l'n-esimo ciclo di chiusura. continue 1
è equivalente a continue
.
Nell'esempio seguente, una volta che l'elemento iterato corrente è uguale a 2
, il continue
istruzione farà tornare l'esecuzione all'inizio del ciclo e per continuare con l'iterazione successiva.
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!
Il seguente script stampa i numeri da 1
tramite 50
che sono divisibili per 9
.
Se un numero non è divisibile per 9
, il continue
l'istruzione salta l'echo
comando e passa il controllo all'iterazione successiva 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
Conclusione #
I loop sono uno dei concetti fondamentali dei linguaggi di programmazione. Nei linguaggi di scripting come Bash, i loop sono utili per automatizzare attività ripetitive.
La break
istruzione viene utilizzata per uscire dal ciclo corrente. Il continue
istruzione viene utilizzata per uscire dall'iterazione corrente di un ciclo e iniziare l'iterazione successiva.
Se hai domande o feedback, sentiti libero di lasciare un commento.