HOWTO · Bash

Usa while Loop in Bash

while loop è una delle strutture loop più utilizzate in quasi tutti i linguaggi di programmazione. Possiamo specificare una condizione per il bucle while e le istruzioni nel bucle vengono eseguite fintanto che la condizione è vera.

In questa pagina

Il cicli while è una delle strutture di bucle più utilizzate in quasi tutti i linguaggi di programmazione. Viene utilizzato quando non sappiamo quante volte è necessario eseguire un bucle. Possiamo specificare una condizione per il bucle while e le istruzioni nel bucle vengono eseguite finché la condizione non diventa falsa.

Sintassi: cicli while in Bash

while [condition]
do
   command-1
   command-2
     ...
     ...
   command-n
done

Qui, la condition rappresenta la condizione che deve essere controllata ogni volta prima di eseguire comandi nel bucle. Se la condition è vera, eseguiamo le istruzioni nel bucle. Se la condition è falsa, usciamo dal bucle. Le istruzioni da command-1 a command-n sono istruzioni eseguite in un bucle fino a quando la condition diventa falsa.

Esempio: cicli while in Bash

#!/bin/bash

num=5

while [ $num -ge 0 ]
do
  echo $num
  ((num--))
done

Produzione:

5
4
3
2
1
0

Qui, inizialmente, num è impostato a 5. Continuiamo a stampare num nel terminale e decrementare num di 1 in un bucle finché il valore num è maggiore o uguale a 0.

Esempio: bucle infinito while in Bash

#!/bin/bash

while true
do
  echo "This is an infinite while loop. Press CTRL + C to exit out of the loop."
  sleep 0.5
done

Produzione:

This is an infinite while loop. Press CTRL + C to exit out of the loop.
This is an infinite while loop. Press CTRL + C to exit out of the loop.
This is an infinite while loop. Press CTRL + C to exit out of the loop.
^C

È un bucle while infinito che stampa This is an infinite while loop. Press CTRL + C to exit out of the loop. ogni 0,5 secondi. Per uscire dal bucle, possiamo premere CTRL+C.

Esempio: cicli while in Bash con istruzione break

#!/bin/bash

num=5

while [ $num -ge 0 ]
do
  echo $num
  ((num--))
  if [[ "$num" == '3' ]]; then
    echo "Exit out of loop due to break"
    break
  fi
done

Produzione:

5
4
Exit out of loop due to break

Nel programma precedente, num è inizializzato come 5. Il bucle viene eseguito finché num è maggiore o uguale a 0. Ma poiché abbiamo un’istruzione break nel bucle quando num è 3. Quindi, usciamo dal bucle quando il valore di num diventa 3.

Esempio: while bucle in Bash con istruzione continue

#!/bin/bash

num=6

while [ $num -ge 1 ]
do
  ((num--))
  if [[ "$num" == '3' ]]; then
    echo "Ignore a step due to continue"
    continue
  fi
  echo $num
  
done

Produzione:

5
4
Ignore a step due to continue
2
1
0

Nel programma precedente, num è inizializzato come 6. Nel bucle, prima diminuiamo num di 1 e poi stampiamo l’ultimo valore num. Il bucle viene eseguito fintanto che il valore num è maggiore o uguale a 1. Quando num diventa 3, lo script non stampa il valore di num poiché abbiamo l’istruzione continue quando num è 3.