Un ciclo (o iterazione) รจ una ripetizione di una determinata azione per un dato numero di volte sulla base di un dato delimitatore. Nei linguaggi di programmazione e negli script di shell, i costrutti piรน comuni per realizzare un ciclo sono for e while. In questo articolo, esploreremo entrambi con esempi pratici.
Il ciclo for
Il ciclo FOR realizza iterazioni sulla base di una lista di valori o condizioni predefinite. Esaminiamo un esempio in shell script:
#!/bin/sh
for X in 1 2 3 4 5
do
echo $X
done
In questo esempio, il ciclo for
itera sui valori specificati (i numeri da 1 a 5) e stampa ciascuno di essi. ร possibile utilizzare anche valori non sequenziali o non numerici per ottenere diverse funzionalitร .
Lo stesso risultato puรฒ essere ottenuto utilizzando il comando seq
per generare la sequenza di valori:
for X in $(seq 5)
do
echo $X
done
Qui, abbiamo utilizzato seq
per creare una sequenza numerica. Il comando seq si rivela utile specialmente per lunghe sequenze. Ecco le modalitร di utilizzo del comando seq
:
- Specifica solo il valore finale (come nell’esempio sopra);
- Specifica sia il valore iniziale che finale;
- Specifica il valore iniziale, l’incremento e il valore finale.
ร importante notare che nel contesto della Bourne Shell, il ciclo for
non puรฒ utilizzare la sintassi formale del ciclo for
di Bash:
for (( X=0; X<10; X++ ))
do
echo $X
done
Questa sintassi appartiene a Bash, quindi per eseguirla correttamente, assicuratevi di specificare la shell appropriata nella prima riga dello script, utilizzando:
#!/bin/bash
Altrimenti, potrebbe apparire un errore di sintassi: "Syntax error: Bad for loop variable".
Il ciclo while
Un altro modo per creare iterazioni all'interno degli script รจ tramite il ciclo WHILE, che esegue le operazioni fintanto che una condizione rimane vera:
#!/bin/sh
X=1
while [ $X -le 5 ]
do
echo $X
X=`expr $X + 1`
done
In questo esempio, il ciclo continua finchรฉ la variabile X
รจ minore o uguale a 5, stampando quindi una sequenza numerica da 1 a 5.
break e continue
Due comandi fondamentali nella gestione dei cicli sono break e continue. break
รจ utilizzato per interrompere il ciclo in maniera immediata. Ecco un esempio di utilizzo:
#!/bin/sh
X=1
while [ $X -le 20 ]
do
echo $X
if [ $X -eq 5 ]
then
break
fi
X=`expr $X + 1`
done
In questo caso, il ciclo viene interrotto quando la variabile X
raggiunge il valore 5.
Grazie a break
, รจ possibile interrompere anche piรน cicli annidati:
#!/bin/sh
for X1 in 1 2 3
do
for X2 in 0 5
do
if [ $X1 -eq 2 -a $X2 -eq 0 ]
then
break 2
else
echo "$X1 $X2";
fi
done
done
In questo esempio, la doppia condizione quando verificata porta al termine di entrambi i cicli, grazie alla sintassi break n
, dove "n" indica il numero di cicli da interrompere.
Invece, continue
non interrompe il ciclo, ma ne salta l'iterazione corrente, proseguendo con la successiva. Il funzionamento e la sintassi sono analoghi a quelli di break
.