Ricerca nel sito web

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.