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

break # Oppure ‘sleep 600’ per evitare la conclusione.<br />

done<br />

# In questo modo lo script si interromperà solo quando non ci saranno<br />

#+ più job da eseguire (compresi i job che sono stati aggiunti durante<br />

#+ il runtime). Tramite l’uso <strong>di</strong> appropriati lockfile può essere<br />

#+ eseguito su <strong>di</strong>verse macchine concorrenti senza duplicazione <strong>di</strong><br />

#+ calcoli [che, nel mio caso, occupano un paio d’ore, quin<strong>di</strong> è<br />

#+ veramente il caso <strong>di</strong> evitarlo]. Inoltre, poiché la ricerca<br />

#+ ricomincia sempre dall’inizio, è possibile co<strong>di</strong>ficare le priorità<br />

#+ nei nomi dei file. Naturalmente, questo si potrebbe fare senza<br />

#+ ‘continue 2’, ma allora si dovrebbe verificare effettivamente se<br />

#+ alcuni job sono stati eseguiti (in questo caso dovremmo cercare<br />

#+ imme<strong>di</strong>atamente il job successivo) o meno (in quest’altro dovremmo<br />

#+ interrompere o sospendere l’esecuzione per molto tempo prima <strong>di</strong><br />

#+ poter verificare un nuovo job).<br />

10.4. Verifiche ed alternative<br />

case (in) / esac<br />

Cautela<br />

Il costrutto continue N è <strong>di</strong>fficile da capire e complicato da usare, in<br />

modo significativo, in qualsiasi contesto. Sarebbe meglio evitarlo.<br />

I costrutti case e select, tecnicamente parlando, non sono cicli, dal momento che non iterano<br />

l’esecuzione <strong>di</strong> un blocco <strong>di</strong> co<strong>di</strong>ce. Come i cicli, tuttavia, hanno la capacità <strong>di</strong> <strong>di</strong>rigere il flusso del<br />

programma in base alle con<strong>di</strong>zioni elencate dall’inizio alla fine del blocco.<br />

Controllo del flusso del programma in un blocco <strong>di</strong> co<strong>di</strong>ce<br />

Il costrutto case è l’equivalente <strong>di</strong> <strong>scripting</strong> <strong>di</strong> shell <strong>di</strong> switch del C/C++. Permette <strong>di</strong> <strong>di</strong>rigere il<br />

flusso del programma ad uno dei <strong>di</strong>versi blocchi <strong>di</strong> co<strong>di</strong>ce, in base alle con<strong>di</strong>zioni <strong>di</strong> verifica. È una<br />

specie <strong>di</strong> scorciatoia <strong>di</strong> enunciati if/then/else multipli e uno strumento adatto per creare menu.<br />

177

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

Saved successfully!

Ooh no, something went wrong!