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 />

Notate che un ciclo until verifica la con<strong>di</strong>zione all’inizio del ciclo, <strong>di</strong>fferendo, in questo, da analoghi<br />

costrutti <strong>di</strong> alcuni linguaggi <strong>di</strong> programmazione.<br />

Come nel caso dei cicli for, collocare il do sulla stessa riga della con<strong>di</strong>zione <strong>di</strong> verifica rende<br />

necessario l’uso del punto e virgola.<br />

until [con<strong>di</strong>zione-falsa] ; do<br />

Esempio 10-18. Ciclo until<br />

#!/bin/bash<br />

CONDIZIONE_CONCLUSIONE=fine<br />

until [ "$var1" = "$CONDIZIONE_CONCLUSIONE" ]<br />

# Con<strong>di</strong>zione <strong>di</strong> verifica all’inizio del ciclo.<br />

do<br />

echo "Immetti variabile nr.1 "<br />

echo "($CONDIZIONE_CONCLUSIONE per terminare)"<br />

read var1<br />

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

echo<br />

done<br />

exit 0<br />

10.2. Cicli annidati<br />

Un ciclo annidato è un ciclo in un ciclo, vale a <strong>di</strong>re un ciclo posto all’interno del corpo <strong>di</strong> un altro<br />

(chiamato ciclo esterno). Al suo primo passo, il ciclo esterno mette in esecuzione quello interno che<br />

esegue il proprio blocco <strong>di</strong> co<strong>di</strong>ce fino alla conclusione. Quin<strong>di</strong>, al secondo passo, il ciclo esterno rimette<br />

in esecuzione quello interno. Questo si ripete finché il ciclo esterno non termina. Naturalmente, un break<br />

contenuto nel ciclo nterno o in quello esterno, può interrompere l’intero processo.<br />

Esempio 10-19. Cicli annidati<br />

#!/bin/bash<br />

# nested-loop.sh: Cicli "for" annidati.<br />

esterno=1 # Imposta il contatore del ciclo esterno.<br />

# Inizio del ciclo esterno.<br />

for a in 1 2 3 4 5<br />

172

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

Saved successfully!

Ooh no, something went wrong!