11.04.2013 Views

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Capitolo 10. Cicli ed alternative<br />

#+ per la presenza <strong>di</strong> "#"...<br />

# Se l’input è ’fine’, viene visualizzato a questo punto.<br />

# La verifica per l’interruzione del ciclo, infatti, è posta all’inizio.<br />

echo<br />

done<br />

exit 0<br />

Un ciclo while può avere <strong>di</strong>verse con<strong>di</strong>zioni. Ma è solamente quella finale che stabilisce quando il<br />

ciclo deve terminare. Per questo scopo, però, è necessaria una sintassi leggermente <strong>di</strong>fferente.<br />

Esempio 10-16. Ciclo while con con<strong>di</strong>zioni multiple<br />

#!/bin/bash<br />

var1=nonimpostata<br />

precedente=$var1<br />

while echo "variabile-precedente = $precedente"<br />

echo<br />

precedente=$var1<br />

[ "$var1" != fine ] # Tiene traccia del precedente valore <strong>di</strong> $var1.<br />

# "while" con quattro con<strong>di</strong>zioni, ma è solo l’ultima che controlla<br />

#+ il ciclo.<br />

# È l’*ultimo* exit status quello che conta.<br />

do<br />

echo "Immetti la variable nr.1 (fine per terminare) "<br />

read var1<br />

echo "variabile nr.1 = $var1"<br />

done<br />

# Cercate <strong>di</strong> capire come tutto questo funziona.<br />

# È un tantino complicato.<br />

exit 0<br />

Come per il ciclo for, anche per un ciclo while si può impiegare una sintassi in stile C usando il<br />

costrutto doppie parentesi (ve<strong>di</strong> anche Esempio 9-30).<br />

Esempio 10-17. Sintassi in stile C <strong>di</strong> un ciclo while<br />

#!/bin/bash<br />

# wh-loopc.sh: Contare fino a 10 con un ciclo "while".<br />

LIMITE=10<br />

a=1<br />

while [ "$a" -le $LIMITE ]<br />

do<br />

echo -n "$a "<br />

170

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!