Shell Scripting · 7 min read · Nov 14, 2025
Shell Scripting Parte 4: Strutture di Controllo della Ripetizione
Benvenuti alla quarta parte della serie di tutorial sulla shell scripting di HowtoForge (Clicca qui per leggere la parte 1, parte 2 e parte 3 del tutorial). In questa parte, tratteremo le diverse strutture di controllo della ripetizione della shell bash e come utilizzare ciascuna struttura fornendo alcuni esempi. Iniziamo.
Introduzione
La struttura di controllo della ripetizione, nota anche come struttura di controllo dei cicli, è un tipo di struttura di controllo nei linguaggi di programmazione che viene utilizzata per semplificare compiti ripetitivi o ricorsivi. Le istruzioni di ciclo ottimizzano qualsiasi codice fornendo un modo per ridurre al minimo il codice, rendendolo più facile da risolvere rispetto a un codice non strutturato che fornisce lo stesso output. Ci sono tre tipi di istruzioni di ciclo supportate dalla shell bash: i cicli for, while e until.
Cicli For
Il ciclo for è un’istruzione di ciclo che utilizza la parola chiave for per dichiarare un’istruzione ripetitiva. La bash supporta diverse sintassi per l’istruzione del ciclo for:
Sintassi 1: Struttura For-in
for in
do
#### la tua istruzione qui
done
Questa sintassi inizia con la parola chiave for, seguita da un nome di variabile, dalla parola chiave in e dall’elenco dei possibili valori per la variabile. Ogni valore nell’elenco sarà separato da uno spazio e l’inizio delle righe di codice che verranno ripetute è definito in do e termina con la parola chiave done.
Creiamo un semplice ciclo for che consentirà all’utente di inserire 5 valori e ottenere la somma dei numeri:
#!/bin/bash
result=0;
input=0;
for var in 1 2 3 4 5
do
printf "Input intero %d : " $var
read input
result=$((result+input))
done
echo "il risultato è " $result
In questo esempio, la variabile var funge da contatore del nostro ciclo. Il suo valore è definito nell’elenco dei numeri dopo la parola chiave in e la shell cambia i valori della variabile var dopo ogni esecuzione del ciclo nell’istruzione di ciclo. Poiché ci sono solo cinque valori interi nel nostro elenco, la shell eseguirà i codici all’interno della nostra istruzione di ciclo solo cinque volte.
Sintassi 2: Istruzione di ciclo For con valori di elenco di stringhe
Puoi anche dichiarare una variabile che conterrà l’elenco degli elementi per il tuo contatore. Ad esempio, considera il seguente codice:
#!/bin/bash
list="var1 var2 var3 var4"
var=""
mkdir sample
cd sample
echo creando le "directory...."
for var in $list
do
mkdir $var
done
La riga list=”var1 var2 var3 var4” definisce i valori della variabile list. È stata quindi assegnata a var nella riga for var in $list e infine, le directory vengono create nella riga mkdir $var.
Sintassi 3: Istruzione di ciclo For con elenco come file
Puoi anche recuperare un elenco da un file esistente da utilizzare nell’istruzione di ciclo for invece di dichiararlo all’interno del tuo codice utilizzando il comando cat. Ad esempio, apri il tuo editor di testo preferito e annota almeno cinque nomi di directory.

Successivamente, apri una nuova scheda nello stesso editor di testo e crea un nuovo script. Questo script dovrebbe essere salvato nella stessa directory in cui è stato salvato l’elenco delle directory che hai creato in precedenza.
#!/bin/bash
dirList=$(cat list)
echo "creando directory...."
for var in $dirList
do
mkdir $var
done
Questo esempio diventa utile quando devi creare centinaia di directory nel tuo computer Linux, non credi?
Sintassi 4: Sintassi simile al C
for((inizializzazione; test_booleano; incremento/decremento))
do
#### il tuo codice va qui
doneForse, la struttura di ciclo for più familiare che la shell supporta è la struttura simile al C. Il ciclo inizia con l’inizializzazione della variabile contatore e poi la shell valuta l’espressione booleana dichiarata dopo l’inizializzazione. Se il risultato dell’espressione booleana è vero, allora la shell eseguirà il set di istruzioni all’interno della clausola do altrimenti, termina l’istruzione di ciclo e procede alla riga dopo la parola chiave done. La shell procederà alla successiva iterazione attraverso l’istruzione di incremento o decremento dichiarata dopo il test booleano. Come esempio, ricostruiamo il nostro primo esempio utilizzando questa struttura.
#!/bin/bash
result=0
input=0
for((var=1;var<=5;var++))
do
printf "Input intero %d : " $var
read input
result=$((result+input))
done
echo $result
Istruzione di Ciclo While
L’istruzione while è un tipo di struttura ripetitiva nella bash che utilizza la parola chiave while. A differenza della sintassi di tipo C della struttura di ciclo for, la struttura di controllo della ripetizione while separa l’inizializzazione, il test booleano e l’istruzione di incremento/decremento.
Sintassi 1: Struttura While con simboli aritmetici basati su istruzioni condizionali
while(condizione)
do
###il tuo codice va qui
done Per poter differenziare while dagli altri cicli, costruiamo il nostro primo esempio per l’istruzione while.
#!/bin/bash
result=0
input=0
var=1
while((var <= 5))
do
printf "Input intero %d : " $var
read input
result=$((result+input))
var=$((var+1))
done
echo "il risultato è " $result
Guardando il nostro esempio, l’istruzione while inizia con un’inizializzazione della nostra variabile contatore var. Successivamente, il test booleano è dichiarato dopo la parola chiave while e il set di istruzioni da ripetere sarà dichiarato all’interno delle istruzioni do e done. Negli istruzioni while, l’interprete inizierà e eseguirà la ripetizione dei codici solo se il risultato del test booleano è vero. D’altra parte, l’istruzione di ciclo terminerà l’iterazione dei codici quando l’espressione booleana risulta falsa.
Sintassi 2: Istruzione di ciclo While con istruzione condizionale basata su mnemonici
while [ ]
do
####il tuo codice va qui
done Puoi anche dichiarare un’istruzione condizionale basata su mnemonici all’interno di un’istruzione di ciclo while. Per la dichiarazione, verrà utilizzata una parentesi quadra invece delle parentesi. (Rivedi le istruzioni condizionali basate su mnemonici qui) Ad esempio:
#!/bin/bash
var=1;
while [ $var -le 5 ]
do
printf "Input intero %d : " $var
read input
result=$((result+input))
var=$((var+1))
done
echo "il risultato è " $result
Sintassi 3: Istruzione di ciclo While con istruzione condizionale basata su file
while read
do
####il tuo codice va qui
done < Proprio come abbiamo fatto nell’istruzione di ciclo for, puoi anche aprire un file di testo e associarlo all’istruzione di ciclo while. Ad esempio:
#!/bin/bash
mkdir sample2
cd sample2
echo "creando directory..."
while read var
do
mkdir $var
done

In questo esempio, ho riciclato l’elenco che abbiamo creato prima e creato un nuovo script nella stessa directory. Nota che se il tuo file di testo si trova in una directory diversa, devi fornire il percorso esatto del file dopo il simbolo <.
Istruzione di Ciclo Until
Un altro tipo di istruzione di ciclo che la bash supporta è la struttura until. L’istruzione until esegue ogni comando all’interno del ciclo fino a quando l’espressione booleana dichiarata risulta falsa. È l’opposto completo dell’istruzione while.
Sintassi 1: Ciclo Until con istruzione condizionale basata su simboli aritmetici
until (())
do
####set di comandi
done Facciamo un esempio:
result=0
input=0
var=1
until((var > 5))
do
printf "Input intero %d : " $var
read input
result=$((result+input))
var=$((var+1))
done
echo "il risultato è " $result
Sintassi 2: Istruzione di ciclo Until con istruzione condizionale basata su mnemonici
until [ ]
do
####il tuo codice va qui
done Poiché l’istruzione until è semplicemente l’opposto dell’istruzione di ciclo while, puoi anche dichiarare un’istruzione condizionale basata su mnemonici nella struttura until. Tuttavia, per terminare, devi dichiarare un’istruzione condizionale opposta - cioè, far valutare l’istruzione condizionale a falsa.
!/bin/bash
result=0
input=0
var=1
until [ $var -gt 5 ]
do
printf "Input intero %d : " $var
read input
result=$((result+input))
var=$((var+1))
done
echo "il risultato è " $result
Conclusione
Questa parte del tutorial copre le tre strutture di ciclo supportate dalla bash: le istruzioni di ciclo for, while e until. Ognuna di queste istruzioni ha una struttura, un utilizzo e vantaggi diversi. La bash supporta diverse strutture, fornendo più scelte ai programmatori e rendendo così la shell scripting facile da codificare.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.