Valid HTML 4.01 Transitional

Home INTRO Variabili Output Aritmetica Selezioni Ripetizioni Test Funzioni

 

Generalita' Comandi Programmazione Manuale Zenity Free Script

 

 

CSS Valido!

 

 

Informazioni   Corso Linux - Sezione Programmazione - Capitolo Ripetizioni

Che cosa sono le Strutture di Ripetizione?

Sono un blocco di comandi contenute tra "do" e "done" eseguite fin quando una certa condizione, racchiusa da parentesi quadre, e' vera oppure quando uno dei comandi genera un errore.
esempio:, che eseguiremo nel Terminale con il comando: bash /percorso_dove_lo_abbiamo_scaricato/ripetizioni.sh

somma=0
x=0
while [ $x -le 100 ]
do
let somma+=$x
let x+=1
done
echo $somma

che significa:
crea le variabili somma e x assegnandogli il valore 0
finche' e' vera la condizione in parentesi quadre [$x minore o uguale a 100], esegui le istruzioni contenute tra do e done, ossia addiziona al valore di somma quello della variabile $x ed incrementa il valore di x.
Quando la condizione e' vera, termina il ciclo e stampa sullo schermo il risultato di somma.


Possiamo ottenere lo stesso risultato utilizzando la struttura until, che differentemente da while, esegue la ripetizione dei comandi compresi tra do e done finche' la condizione si mantiene falsa.
esempio:

somma=0
x=0
until [ $x -gt 100 ]
do
let somma+=$x
let x+=1
done
echo $somma

dove until [ $x -gt 100 ] significa finche' il valore di $x e' maggiore di 100


Il ciclo for per ogni ELEMENTO presente in LISTA esegue i comandi compresi tra do e done con la sintassi:
for ELEMENTO in LISTA
do
istruzioni
done
esempio:

for file in $(ls); do
echo $file
done

dove il ciclo inizializza una nuova variabile $file (ELEMENTO), al primo elemento della LISTA $(ls) che e' ( ricordi? ) una command substitution e visualizza sullo schermo il nome del primo file ottenuto con il comando ls e cosi' via fin a quando non vengono esauriti gli elementi presenti nella lista dei file.
Altro esempio:

LISTA="pane;pasta;pomodori;olio;sale;pepe;vino"
OLD_IFS="$IFS"
export IFS=";"
for i in $LISTA; do
echo $i
done
export IFS="$OLD_IFS"

La lista di elementi e' composta da una serie di parole separate dal separatore spazio.
Poiche' la lista in esempio usa come separatore il ";", salviamo il separatore standard $IFS, che e' lo spazio, nella variabile OLD_IFS e gli assegnamo al separatore il ";" con l'istruzione export IFS=";" .
Con il ciclo for assegnamo alla variabile "i" il primo elemento contenuto in "$LISTA" e cosi' via finche' la lista si esaurisce.
A questo punto riportiamo il separatore standard al suo valore originale tramite l'istruzione export IFS="$OLD_IFS" ed il gioco e' fatto.

È possibile definire un separatore standard personalizzato (eventualmente costituito da più di un carattere), in modo da processare qualsiasi tipo di lista.
Ultimo esempio:

for i in $(seq 1 10); do
echo $i
done

Sfruttando l'utility seq otteniamo un ciclo for che itera le sue istruzioni; seq 1 10 restituisce una lista contenente i numeri da 1 a 10 .

 

Copyright ©2009 Ciro Nuzzo - proglinux.altervista.org