Introduzione
Il continue
istruzione è un builtin Bash che altera il flusso dei loop di script. Il concetto non è esclusivo di Bash e appare in altri linguaggi di programmazione.
Il modo migliore per capire come Bash continue
la dichiarazione funziona attraverso esempi pratici.
Questo tutorial mostra come usare Bash continue
dichiarazione negli script Bash.
Prerequisiti
- Una macchina che esegue Linux o macOS.
- Un editor di testo per gli esempi.
- Conoscenza di base dello scripting Bash.
La dichiarazione continua di Bash
Il continue
di Bash istruzione riprende l'iterazione seguente in un ciclo o un'istruzione di ciclo.
La sintassi è:
continue <integer>
Il continue
istruzione ha significato solo se applicata ai loop. Il valore intero indica la profondità per il continue
dichiarazione. Per impostazione predefinita, il numero intero è 1
e scrivere il numero non è obbligatorio. Aumenta il numero per riprendere un'istruzione di ciclo esterno.
Usa un continue
istruzione come istruzione di controllo del ciclo. Ad esempio, il continue
istruzione aiuta a terminare l'iterazione corrente all'interno di un ciclo quando soddisfa una condizione specifica. A seconda del tipo di ciclo, il programma riprende all'iterazione successiva o riavvia il ciclo.
Bash continua Esempi
Di seguito sono riportati esempi e spiegazioni sull'utilizzo dell'istruzione continue negli script Bash.
I seguenti costrutti di ciclo primario mostrano come funziona l'istruzione:
- Il ciclo for continua all'iterazione successiva se combinato con continue.
- L'istruzione continue riavvia il
while
euntil
loop.
Il select
comando appare anche negli esempi, anche se non è un costrutto di ciclo primario. L'istruzione funziona come un ciclo e continue
istruzione funziona per qualsiasi comando di ciclo.
Utilizzare Bash continua con un ciclo for
Usa il continue
istruzione all'interno di un condizionale se per controllare il flusso di un for
:
#!/bin/bash
for i in {1..10}
do
if [[ $i == '9' ]]
then
echo "Number $i!"
continue
fi
echo "$i"
done
echo "Done!"
Il codice esegue le seguenti operazioni:
- Riga 3 avvia il
for
condizione di ciclo, iterando la variabilei
da1
a10
. - Riga 5 controlla il
i
valore. Quando la variabile è uguale a9
, il programma fa eco a un messaggio e riavvia il ciclo all'iterazione successiva (riga 3 ). - Riga 10 stampa il numero sulla console solo quando l'istruzione condizionale nella riga 5 è Falso .
Esegui lo script per vedere i risultati.
L'output stampa tutti i singoli numeri sulla console. Quando la condizione nella riga 5 restituisce True ($i == '9'
), la console fa eco a un messaggio.
Utilizzo di Bash Continua con Nested Loop
Il continue
l'istruzione funziona con loop nidificati anche. Ad esempio, usa continue 2
per riprendere un ciclo esterno:
#!/bin/bash
for i in {1..5}
do
for j in {1..5}
do
if [[ $i -eq $j ]]
then
echo "$i = $j"
continue 2
fi
echo "$i =/= $j"
done
done
echo "Done!"
Il programma esegue le seguenti operazioni:
- Riga 3 avvia il ciclo esterno, incrementando la variabile
i
da1
a5
. - Riga 5 avvia un ciclo for interno, incrementando la variabile
j
da1
a5
per ognii
incremento. - Riga 7 controlla se le variabili
i
ej
sono uguali ($i -eq $j
). Se lo sono, ilcontinue 2
istruzione riprende il ciclo esterno all'iterazione successiva. Tuttavia, se i valori sono diversi, il programma continua come previsto.
Esegui lo script per vedere l'output del programma.
Ogni volta che i due valori sono uguali, il primo numero aumenta.
Usare Bash continua con un po' di loop
Di seguito è riportato un esempio di script Bash che utilizza <strong>continue</strong>
dichiarazione in un while
ciclo:
#!/bin/bash
i=0
while [[ $i -lt 11 ]]
do
if [[ "$i" == '9' ]]
then
echo "Number $i!"
((i++))
continue
fi
echo $i
((i++))
done
Ogni riga esegue le seguenti operazioni:
- Riga 3 definisce una variabile
i
e imposta il valore su0
. - Riga 5 avvia un
while
ciclo continuo. La condizione finale è quandoi
è inferiore a11
. - Riga 7 indica un controllo delle condizioni utilizzando un
if
dichiarazione. Quando la variabilei
è uguale a9
, il programma procede alle linee 9-11 . In tutti gli altri casi, il codice salta alla riga 13 . - Righe 9-11 stampa un messaggio sulla console, incrementa
i
e ilcontinue
l'istruzione riprende il ciclo alla riga 5 . - Righe 13 e 14 stampa la variabile
i
alla console e incrementarlo.
Per vedere l'output, esegui lo script dal terminale.
Il programma stampa tutti i numeri sulla console. A causa delle istruzioni condizionali e continue, viene stampato un messaggio diverso per il numero 9
.
Utilizzare Bash continua con un ciclo fino a
Combina il continue
dichiarazione con un until
ciclo e fornire una condizione per modificare il comportamento del ciclo per un determinato valore. Ad esempio, prova il seguente script:
#!/bin/bash
i=0
until [[ $i -gt 10 ]]
do
if [[ $i -eq 9 ]]
then
echo "Number $i!"
((i++))
continue
fi
echo $i
((i++))
done
Il codice incrementa una variabile e scorre finché il valore non raggiunge 10
. Quando la variabile è uguale a 9
, il programma emette un messaggio diverso. Il continue
l'istruzione riavvia il until
loop e continua come al solito.
Utilizzare Bash Continua con un ciclo selezionato
Il select
command è un caso particolare perché non è un ciclo di scripting Bash primario. Il comando crea menu che richiedono l'input dell'utente. Usa il continue
istruzione per fornire un output diverso in base al valore selezionato dall'utente.
Ad esempio, prova il seguente script Bash:
#!/bin/bash
PS3="Choose a number: "
select i in {1..10}
do
echo "Selected number: $i"
if [[ $REPLY -eq 9 ]]
then
echo "Number $i!"
continue
fi
done
Lo script è composto dai seguenti elementi:
- Il
PS3
nella riga 3 c'è il messaggio sul display per ilselect
ciclo. - Riga 5 definisce la condizione del ciclo, elencando i numeri da
1
a10
. La variabilei
memorizza l'input dell'utente. - Riga 7 fa eco alla selezione.
- Riga 8 esegue un controllo. Se il valore immesso dall'utente è
9
, il programma stampa un messaggio sulla console e continua laselect
ciclo all'iterazione successiva.
Esegui lo script e verifica valori diversi per vedere l'output.
Per uscire dal programma, premi CTRL +C o aggiungi una dichiarazione di interruzione.