<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE>BASH Programming - Introduction HOWTO: Cicli for, while e until</TITLE> <LINK HREF="Bash-Prog-Intro-HOWTO-8.html" REL=next> <LINK HREF="Bash-Prog-Intro-HOWTO-6.html" REL=previous> <LINK HREF="Bash-Prog-Intro-HOWTO.html#toc7" REL=contents> </HEAD> <BODY> <A HREF="Bash-Prog-Intro-HOWTO-8.html">Avanti</A> <A HREF="Bash-Prog-Intro-HOWTO-6.html">Indietro</A> <A HREF="Bash-Prog-Intro-HOWTO.html#toc7">Indice</A> <HR> <H2><A NAME="s7">7. Cicli for, while e until</A> </H2> <P> In questa sezione troverai cicli for, while e until. <P> Il ciclo <B>for</B> è leggermente diverso da quello degli altri linguaggi di programmazione. Basilarmente, ti permette un'iterazione su una serie di 'parole' in una stringa. <P> Il <B>while</B> 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). <P> Il ciclo <B>until</B> è all'incirca uguale al ciclo while, solo che il codice è eseguito finchè l'espressione di controllo ha valore "falso". <P> Se hai il sospetto che while e until siano molto simili hai ragione. <H2><A NAME="ss7.1">7.1 Per esempio</A> </H2> <P> <BLOCKQUOTE><CODE> <PRE> #!/bin/bash for i in $( ls ); do echo item: $i done </PRE> </CODE></BLOCKQUOTE> <P> <P> Sulla seconda riga, dichiariamo i come la variabile che prenderà i differenti valori contenuti in $( ls ). <P> La terza riga potrebbe essere più lunga se necessario, o ci potrebbero essere più righe prima del done (4). <P> `done' (4) indica che il codice che ha utilizzato il valore di $i è terminato e $i può ricevere un nuovo valore. <P> 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. <P> <H2><A NAME="ss7.2">7.2 For simil-C</A> </H2> <P> 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... <BLOCKQUOTE><CODE> <PRE> #!/bin/bash for i in `seq 1 10`; do echo $i done </PRE> </CODE></BLOCKQUOTE> <H2><A NAME="ss7.3">7.3 Esempio di while</A> </H2> <P> <BLOCKQUOTE><CODE> <PRE> #!/bin/bash COUNTER=0 while [ $COUNTER -lt 10 ]; do echo The counter is $COUNTER let COUNTER=COUNTER+1 done </PRE> </CODE></BLOCKQUOTE> <P> <P> Questo script 'emula' la ben conosciuta struttura 'for' dei linguaggi C, Pascal, perl, etc. <H2><A NAME="ss7.4">7.4 Esempio di until</A> </H2> <P> <BLOCKQUOTE><CODE> <PRE> #!/bin/bash COUNTER=20 until [ $COUNTER -lt 10 ]; do echo COUNTER $COUNTER let COUNTER-=1 done </PRE> </CODE></BLOCKQUOTE> <HR> <A HREF="Bash-Prog-Intro-HOWTO-8.html">Avanti</A> <A HREF="Bash-Prog-Intro-HOWTO-6.html">Indietro</A> <A HREF="Bash-Prog-Intro-HOWTO.html#toc7">Indice</A> </BODY> </HTML>