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

Istruzione di ciclo utilizzando for in bash

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

Lettura dei valori delle stringhe utilizzando l'istruzione di ciclo for

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.

Creazione di directory da un file di testo utilizzando il ciclo for

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

Creazione di directory da un file di testo utilizzando il ciclo for

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  
 done

Forse, 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

Istruzioni di ciclo for in bash

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

Istruzione di ciclo while nella shell scripting Bash

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

Istruzione di ciclo while nella shell scripting

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

Lettura del file utilizzando il ciclo while nella shell scripting

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

Istruzione di ciclo Until nella shell scripting

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

Istruzione di ciclo until nella shell scripting

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.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.