Come utilizzare Bash For Loop in Linux: un tutorial per principianti
Nei linguaggi di programmazione, i Loop sono componenti essenziali e vengono utilizzati quando si desidera ripetere il codice più e più volte finché non viene soddisfatta una condizione specifica.
Nello scripting Bash, i loop svolgono più o meno lo stesso ruolo e vengono utilizzati per automatizzare attività ripetitive proprio come nei linguaggi di programmazione.
Negli script Bash, ci sono 3 tipi di loop: ciclo for, ciclo while e until ciclo. I tre vengono utilizzati per scorrere un elenco di valori ed eseguire un determinato insieme di comandi.
In questa guida ci concentreremo su Bash For Loop in Linux.
Sintassi del ciclo Bash For
Come accennato in precedenza, il ciclo for esegue un'iterazione su un intervallo di valori ed esegue una serie di comandi Linux.
Il ciclo For accetta la seguente sintassi:
for variable_name in value1 value2 value3 .. n
do
command1
command2
commandn
done
Vediamo ora alcuni esempi di utilizzo del ciclo bash for.
Bash per esempio di ciclo
Nella sua forma più semplice, il ciclo for assume il seguente formato di base. In questo esempio, la variabile n
esegue un'iterazione su un gruppo di valori numerici racchiusi tra parentesi graffe e stampa i relativi valori su stdout.
for n in {1 2 3 4 5 6 7};
do
echo $n
done
Bash For Loop con intervalli
Negli esempi precedenti, abbiamo elencato esplicitamente i valori che devono essere iterati dal ciclo for, che funziona perfettamente. Tuttavia, puoi solo immaginare quanto sarebbe complicato e dispendioso in termini di tempo un'attività se dovessi ripetere, ad esempio, su un centinaio di valori. Ciò ti costringerebbe a digitare tutti i valori da 1 a 100.
Per risolvere questo problema, specificare un intervallo. Per fare ciò, specificare il numero da avviare e interrompere separati da due punti.
In questo esempio, 1 è il primo valore mentre 7 è l'ultimo valore dell'intervallo.
#!/bin/bash
for n in {1..7};
do
echo $n
done
Una volta eseguito lo script della shell, vengono elencati tutti i valori nell'intervallo, in modo simile a quello che avevamo nei cicli semplici.
Inoltre, possiamo includere un valore alla fine dell'intervallo che farà sì che il ciclo for ripeta i valori in passaggi incrementali.
Il seguente script bash stampa i valori tra 1 e 7 con 2 passaggi incrementali tra i valori a partire dal primo valore.
#!/bin/bash
for n in {1..7..2};
do
echo $n
done
Dall'esempio sopra, puoi vedere che il ciclo ha incrementato i valori all'interno delle parentesi graffe di 2 valori.
Bash For Loops con array
Puoi anche scorrere facilmente i valori definiti in un array utilizzando un ciclo for. Nell'esempio seguente, il ciclo for scorre tutti i valori all'interno dell'arrayfruits e li stampa su stdout.
#!/bin/bash
fruits=("blueberry" "peach" "mango" "pineapple" "papaya")
for n in ${fruits[@]};
do
echo $n
done
L'operatore @
accede o prende di mira tutti gli elementi. Ciò rende possibile scorrere tutti gli elementi uno per uno.
Inoltre, puoi accedere a un singolo elemento specificando la sua posizione all'interno dell'array.
Ad esempio, per accedere all'elemento “mango”, sostituisci l'operatore @
con la posizione dell'elemento nell'array (il primo elemento inizia da 0, quindi in questo caso “mango” sarà indicato con 2).
Ecco come appare il ciclo for.
#!/bin/bash
fruits=("blueberry" "peach" "mango" "pineapple" "papaya")
for n in ${fruits[2]};
do
echo $n
done
Stile Bash C per loop
È possibile utilizzare variabili all'interno dei cicli per scorrere una serie di elementi. È qui che entrano in gioco i cicli for in stile C. L'esempio seguente illustra un ciclo for in stile C che stampa un elenco di valori numerici da 1 a 7.
#!/bin/bash
n=7
for (( n=1 ; n<=$n ; n++ ));
do
echo $n
done
Cicli For in stile C di Bash con istruzioni condizionali
Puoi includere istruzioni condizionali all'interno di cicli for in stile C. Nell'esempio seguente, abbiamo incluso un'istruzione if-else che controlla e stampa i numeri pari e dispari tra 1 e 7.
#!/bin/bash
for (( n=1; n<=7; n++ ))
do
# Check if the number is even or not
if (( $n%2==0 ))
then
echo "$n is even"
else
echo "$n is odd"
fi
done
Utilizza l'istruzione "Continue" con Bash For Loop
L'istruzione "continua" è un comando integrato che controlla il modo in cui viene eseguito uno script. Oltre allo scripting bash, viene utilizzato anche in linguaggi di programmazione come Python e Java.
L'istruzione continua interrompe l'iterazione corrente all'interno di un ciclo quando viene soddisfatta una condizione specifica, quindi riprende l'iterazione.
Considera il ciclo for mostrato di seguito.
#!/bin/bash
for n in {1..10}
do
if [[ $n -eq '6' ]]
then
echo "Target $n has been reached"
continue
fi
echo $n
done
Questo è ciò che fa il codice:
- Riga 2: segna l'inizio del ciclo for e itera la variabile n da 1 a 10.
- Riga 4: controlla il valore di n e se la variabile è uguale a 6, lo script invia un messaggio a stdout e riavvia il ciclo all'iterazione successiva nella riga 2.
- Riga 9: stampa i valori sullo schermo solo se la condizione nella riga 4 è falsa.
Di seguito è riportato l'output previsto dopo l'esecuzione dello script.
Utilizza l'istruzione "break" con Bash For Loop
L'istruzione 'break', come suggerisce il nome, interrompe o termina l'iterazione quando viene soddisfatta una condizione.
Considera il ciclo For di seguito.
#!/bin/bash
for n in {1..10}
do
if [[ $n -eq '6' ]]
then
echo "Target $n has been reached"
break
fi
echo $n
done
echo "All done"
Questo è ciò che fa il codice:
- Riga 2: segna l'inizio del ciclo for e itera la variabile n da 1 a 10.
- Riga 4: controlla il valore di n e se la variabile è uguale a 6, lo script invia un messaggio allo stdout e interrompe l'iterazione.
- Riga 9: stampa i numeri sullo schermo solo se la condizione nella riga 4 è falsa.
Dall'output, puoi vedere che il ciclo si interrompe una volta che la variabile soddisfa la condizione del ciclo.
Conclusione
Quello era un tutorial su Bash For loops. Ci auguriamo che tu abbia trovato questo interessante. Sentiti libero di esprimere il tuo feedback.