sabato 9 gennaio 2010

bash scripting - iterazione (p4)

Con questo post si concludono gli argomenti basilari per creare degli script in bash. Infatti vedremo come è possibile fare dei cicli d'iterazione.

In un ciclo è infatti possibile specificare di compiere determinate azioni finché non si verifica una determinata condizione.
In bash ci sono tre tipi di cicli:
  • while
  • until
  • for
While
Questo costrutto esegue le operazioni specificate finché la condizione specificata rimane vera, appena viene valutata falsa il ciclo termina ed il programma prosegue con l'istruzione successiva al while.
Esempio:

#! /bin/bash

contatore=0
while test  $contatore -lt 10 ; # condizione
do # inizio blocco istruzioni
    echo "Il contatore e' $contatore"
    let contatore=$contatore+1
done # fine blocco istruzioni

echo "Fine while"
exit 0

Il programma semplicemente stampa il valore di contatore finché questo è minore di 10.
L'istruzione let semplicemente assegna a contatore il valore della somma tra contatore ed 1.

Until
E' simile al while, ma con la differenza che il ciclo di istruzioni viene eseguito quando la condizione è valutata falsa, metre termina una volta che è vera.
Altra differenza fondamentale è che con until prima viene eseguito il blocco di istruzioni, poi viene fatto il controllo, mentre con while era l'opposto.
Esempio:

#!/bin/bash

contatore=10
until test $contatore -lt 0 ; #condizione
do # inizio blocco istruzioni
    echo "il contatore e' $contatore"
    let contatore=$contatore-1
done # fine blocco istruzioni

echo "Fine until"

exit 0

Il programma è simile al precedente, solo che contatore parte da 10 ed arriva a 0.

For
Il for è un costrutto che esegue le istruzioni specificate per una certa sequenza di valori. Ovvero viene usata una variabile che assume ad ogni iterazione il valore successivo (nella sequenza) a quello che aveva nell'iterazione precedente.
Vediamo il solito esempio con la sequenza di numeri da 0 a 10:

#!/bin/bash

for i in `seq 0 10`;
do # inizio blocco istruzioni
    echo "i= $i"
done # fine blocco istruzioni

echo "Fine for"
exit 0

Notiamo che i è la variabile che assume i valori della sequenza di numeri da 0 a 10 che è specificata con  `seq 0 10`.

Il for non si limita soltanto a sequenze di numeri, ma può essere usato per valori di qualsiasi tipo, come file o stringhe.
Esempio:

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

In questo caso i conterrà tutti i file o directory restituite dal comando ls.

E questo è tutto!

Nessun commento:

Posta un commento