Introduzione
I loop sono uno dei concetti fondamentali dei linguaggi di programmazione. I loop sono utili quando si desidera eseguire ripetutamente una serie di comandi fino a quando non viene soddisfatta una condizione specifica.
In linguaggi di scripting come Bash, i loop sono utili per automatizzare attività ripetitive. Esistono 3 costrutti di loop di base negli script Bash, for loop, while loop e until a loop.
Questo tutorial spiega le basi del ciclo until in Bash.
Bash until Loop
Il ciclo until viene utilizzato per eseguire un determinato set di comandi fintanto che la condizione data restituisce false.
Il ciclo Bash until assume la forma seguente:
until [CONDITION]
do
[COMMANDS]
done
La condizione viene valutata prima di eseguire i comandi. Se la condizione è falsa, i comandi vengono eseguiti. Altrimenti, se la condizione restituisce true, il loop verrà terminato e il controllo del programma verrà passato al comando che segue.
Nell'esempio seguente, ad ogni iterazione il ciclo stampa il valore corrente della variabile counter
e incrementa la variabile di uno.
#!/bin/bash
counter=0
until [ $counter -gt 5 ]
do
echo Counter: $counter
((counter++))
done
Il ciclo scorre fino a quando la variabile counter
ha un valore maggiore di quattro. Lo script produrrà il seguente output:
Counter: 0
Counter: 1
Counter: 2
Counter: 3
Counter: 4
Counter: 5
Esempi
Il seguente script può essere utile se l'host git ha dei tempi di inattività e invece di digitare manualmente git pull
più volte fino a quando l'host è online è possibile eseguire lo script una volta. Tenterà di estrarre il repository fino a quando non verrà estratto correttamente.
#!/bin/bash
until git pull &> /dev/null
do
echo "Waiting for the git host ..."
sleep 1
done
echo -e "\nThe git repository is pulled."
Lo script stamperà "Aspettando l'host git ..." e si sospenderà (sleep) per un secondo fino a quando l'host git non sarà online. Una volta estratto il repository, verrà stampato "The git repository is pulled.".
Waiting for the git host ...
Waiting for the git host ...
Waiting for the git host ...
The git repository is pulled.
Conclusione
I cicli while
e until
sono simili tra loro, con la differenza principale che il ciclo while
scorre fino a quando la condizione viene valutata true
e il ciclo until
scorre fino a quando la condizione viene valutata false
.