Come qualsiasi altro linguaggio di scripting, anche Bash supporta i loop.
I loop sono ottimi per svolgere attività ripetitive. Possiamo utilizzare i loop for e while nei nostri script Bash.
Bash For Loop
La sintassi del ciclo for è:
for VARIABLE in PARAM1 PARAM2 PARAM3
do
// scope of for loop
done
Il ciclo for verrà eseguito per ogni parametro. I parametri possono essere numeri, intervallo di numeri o stringhe, ecc.
Esempio Bash For Loop
Questo semplice esempio stampa i numeri, da 1 a 5 usando il ciclo for:
#!/bin/bash
for i in 1 2 3 4 5
do
echo "$i"
done
Uscita:
1
2
3
4
5
Bash For Loop - Stampa intervallo di numeri
Possiamo anche definire un intervallo di numeri da scorrere:
Ad esempio:
for i in {1..5}
do
echo "$i"
done
Uscita:
1
2
3
4
5
Bash Loop Through Strings
Possiamo anche usare il ciclo for per scorrere i parametri della stringa:
#!/bin/bash
for day in MON TUE WED THU FRI SAT SUN
do
echo "$day"
done
Uscita:
MON
TUE
WED
THU
FRI
SAT
SUN
Bash For Loop - Stile C
Possiamo anche usare una sintassi in stile C per scrivere il ciclo for. Ad esempio:
#!/bin/bash
for ((i=1; i<=5; i++))
do
echo "$i"
done
Uscita
1
2
3
4
5
Per ciclo per stampare l'elenco dei file nella directory corrente
Per elencare tutti i file nella directory corrente usando il ciclo bash for, usiamo:
#!/bin/bash
for fname in ./
do
ls -l $fname
done
Bash While Loop
Bash supporta anche i loop while. I cicli While eseguono una serie di istruzioni finché una condizione non restituisce true.
La sintassi per il ciclo while di Bash è:
while [condition]
do
//execute instructions
done
La condizione viene valutata prima di eseguire qualsiasi istruzione. Pertanto, è necessario disporre di un mezzo per aggiornare la condizione, altrimenti il ciclo verrà eseguito per sempre.
Esempio di ciclo Bash While
Quello che segue è un semplice ciclo while che stampa i numeri da 1 a 5. Il ciclo termina quando il numero è maggiore di 5.
#!/bin/bash
num=1
while [ $num -le 5 ]
do
echo "$num"
let num++
done
Bash C-Style While Loop
Come il ciclo for, possiamo anche scrivere il ciclo bash while in un linguaggio simile allo stile C.
Ad esempio:
#!/bin/bash
num=1
while((num <= 5))
do
echo $num
let num++
done