Avanti Indietro Indice

7. Cicli for, while e until

In questa sezione troverai cicli for, while e until.

Il ciclo for è leggermente diverso da quello degli altri linguaggi di programmazione. Basilarmente, ti permette un'iterazione su una serie di 'parole' in una stringa.

Il while esegue una porzione di codice se l'espressione di controllo è vera, e si ferma esclusivamente quando è falsa (o viene raggiunta un'interruzione esplicita all'interno del codice eseguito).

Il ciclo until è all'incirca uguale al ciclo while, solo che il codice è eseguito finchè l'espressione di controllo ha valore "falso".

Se hai il sospetto che while e until siano molto simili hai ragione.

7.1 Per esempio

        #!/bin/bash
        for i in $( ls ); do
            echo item: $i
        done
        

Sulla seconda riga, dichiariamo i come la variabile che prenderà i differenti valori contenuti in $( ls ).

La terza riga potrebbe essere più lunga se necessario, o ci potrebbero essere più righe prima del done (4).

`done' (4) indica che il codice che ha utilizzato il valore di $i è terminato e $i può ricevere un nuovo valore.

Questo script ha veramente poco senso, ma un modo più utile per utilizzare il ciclo for sarebbe di usarlo per isolare ("to match", ndt) solo certi file nell'esempio precedente.

7.2 For simil-C

fiesh ha suggerito di aggiungere questo modo di eseguire un ciclo. Si tratta di un ciclo for più simile al for dei linguaggi C/perl...

        #!/bin/bash
        for i in `seq 1 10`;
        do
                echo $i
        done    
        

7.3 Esempio di while

         #!/bin/bash 
         COUNTER=0
         while [  $COUNTER -lt 10 ]; do
             echo The counter is $COUNTER
             let COUNTER=COUNTER+1 
         done
         

Questo script 'emula' la ben conosciuta struttura 'for' dei linguaggi C, Pascal, perl, etc.

7.4 Esempio di until

         #!/bin/bash 
         COUNTER=20
         until [  $COUNTER -lt 10 ]; do
             echo COUNTER $COUNTER
             let COUNTER-=1
         done
         


Avanti Indietro Indice