I loop sono uno dei concetti fondamentali dei linguaggi di programmazione. I loop sono utili quando vuoi eseguire una serie di comandi un certo numero di volte finché non viene soddisfatta una condizione particolare.
Nei linguaggi di scripting come Bash, i loop sono utili per automatizzare le attività ripetitive. Ci sono tre costrutti di ciclo di base nello scripting Bash, for
ciclo, while
ciclo e until
ciclo.
Questo tutorial copre le basi di while
loop in Bash. Ti mostreremo anche come utilizzare il break
e continue
istruzioni per alterare il flusso di un ciclo.
Bash while
Ciclo #
Il while
loop viene utilizzato per eseguire un determinato insieme di comandi un numero imprecisato di volte fintanto che la condizione data restituisce true.
La Bash while
loop assume la forma seguente:
while [CONDITION]
do
[COMMANDS]
done
Il while
l'istruzione inizia con il while
parola chiave, seguita dall'espressione condizionale.
La condizione viene valutata prima di eseguire i comandi. Se la condizione restituisce true, i comandi vengono eseguiti. In caso contrario, se la condizione restituisce false, il ciclo viene terminato e il controllo del programma verrà passato al comando che segue.
Nell'esempio seguente, ad ogni iterazione, il valore corrente della variabile i
viene stampato e incrementato di uno.
i=0
while [ $i -le 2 ]
do
echo Number: $i
((i++))
done
Tue loop continua finché i
è minore o uguale a due. Produrrà il seguente output:
Number: 0
Number: 1
Number: 2
Infinito while
Ciclo #
Un ciclo infinito è un ciclo che si ripete all'infinito e non termina mai. Se la condizione restituisce sempre true, ottieni un ciclo infinito.
Nell'esempio seguente, stiamo usando il comando integrato :
per creare un ciclo infinito. :
restituisce sempre vero. Puoi anche usare true
built-in o qualsiasi altra affermazione che restituisce sempre true.
while :
do
echo "Press <CTRL+C> to exit."
sleep 1
done
Il while
il ciclo precedente verrà eseguito a tempo indeterminato. Puoi terminare il ciclo premendo CTRL+C
.
Ecco un equivalente a riga singola:
while :; do echo 'Press <CTRL+C> to exit.'; sleep 1; done
Leggi un file riga per riga #
Uno degli usi più comuni del while
loop è leggere un file, un flusso di dati o una variabile riga per riga.
Ecco un esempio che legge il /etc/passwd
file riga per riga e stampa ogni riga:
file=/etc/passwd
while read -r line; do
echo $line
done < "$file"
Invece di controllare il while
loop con una condizione, stiamo usando il reindirizzamento dell'input (< "$file"
) per passare un file a read
comando, che controlla il ciclo. Il while
il ciclo verrà eseguito fino alla lettura dell'ultima riga.
Quando leggi un file riga per riga, usa sempre read
con il -r
opzione per impedire che la barra rovesciata agisca come carattere di escape.
Per impostazione predefinita, il read
il comando taglia gli spazi vuoti iniziali/finali (spazi e tabulazioni). Usa IFS=
opzione prima di read
per prevenire questo comportamento:
file=/etc/passwd
while IFS= read -r line; do
echo $line
done < "$file"
break
e continue
Dichiarazioni #
La break
e continue
Le istruzioni possono essere utilizzate per controllare l'esecuzione del ciclo while.
break
Dichiarazione #
La break
termina il ciclo corrente e passa il controllo del programma al comando che segue il ciclo terminato. Di solito viene utilizzato per terminare il ciclo quando viene soddisfatta una determinata condizione.
Nell'esempio seguente, l'esecuzione del ciclo verrà interrotta una volta che l'elemento correntemente iterato sarà uguale a 2
.
i=0
while [ $i -lt 5 ]
do
echo "Number: $i"
((i++))
if [[ "$i" == '2' ]]; then
break
fi
done
echo 'All Done!'
Number: 0
Number: 1
All Done!
continue
Dichiarazione #
Il continue
esce dall'iterazione corrente di un ciclo e passa il controllo del programma all'iterazione successiva del ciclo.
Di seguito, 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!
Conclusione #
Il while
loop esegue ripetutamente un dato insieme di comandi fintanto che una condizione è vera.
Se hai domande o feedback, sentiti libero di lasciare un commento.