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
whileeuntilloop.
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
forcondizione di ciclo, iterando la variabileida1a10. - Riga 5 controlla il
ivalore. 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
ida1a5. - Riga 5 avvia un ciclo for interno, incrementando la variabile
jda1a5per ogniiincremento. - Riga 7 controlla se le variabili
iejsono uguali ($i -eq $j). Se lo sono, ilcontinue 2istruzione 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
ie imposta il valore su0. - Riga 5 avvia un
whileciclo continuo. La condizione finale è quandoiè inferiore a11. - Riga 7 indica un controllo delle condizioni utilizzando un
ifdichiarazione. 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
ie ilcontinuel'istruzione riprende il ciclo alla riga 5 . - Righe 13 e 14 stampa la variabile
ialla 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
PS3nella riga 3 c'è il messaggio sul display per ilselectciclo. - Riga 5 definisce la condizione del ciclo, elencando i numeri da
1a10. La variabileimemorizza 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 laselectciclo 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.