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.

done<br />

echo; echo<br />

# Esercizio:<br />

# Trovate un valido uso <strong>di</strong> "continue N" in uno script.<br />

exit 0<br />

Esempio 10-23. Uso <strong>di</strong> “continue N” in un caso reale<br />

Capitolo 10. Cicli ed alternative<br />

# Albert Reiner fornisce un esempio <strong>di</strong> come usare "continue N":<br />

# ---------------------------------------------------------<br />

# Supponiamo <strong>di</strong> avere un numero elevato <strong>di</strong> job che devono essere<br />

#+ eseguiti, con tutti i dati che devono essere trattati contenuti in un<br />

#+ file, che ha un certo nome ed è inserito in una data <strong>di</strong>rectory.<br />

#+ Ci sono <strong>di</strong>verse macchine che hanno accesso a questa <strong>di</strong>rectory e voglio<br />

#+ <strong>di</strong>stribuire il lavoro su tutte queste macchine. Per far questo,<br />

#+ solitamente, utilizzo nohup con il co<strong>di</strong>ce seguente su ogni macchina:<br />

while true<br />

do<br />

for n in .iso.*<br />

do<br />

[ "$n" = ".iso.opts" ] && continue<br />

beta=${n#.iso.}<br />

[ -r .Iso.$beta ] && continue<br />

[ -r .lock.$beta ] && sleep 10 && continue<br />

lockfile -r0 .lock.$beta || continue<br />

echo -n "$beta: " ‘date‘<br />

run-isotherm $beta<br />

date<br />

ls -alF .Iso.$beta<br />

[ -r .Iso.$beta ] && rm -f .lock.$beta<br />

continue 2<br />

done<br />

break<br />

done<br />

# I dettagli, in particolare sleep N, sono specifici per la mia<br />

#+ applicazione, ma la struttura generale è:<br />

while true<br />

do<br />

for job in {modello}<br />

do<br />

{job già terminati o in esecuzione} && continue<br />

{marca il job come in esecuzione, lo esegue, lo marca come eseguito}<br />

continue 2<br />

done<br />

176

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

Saved successfully!

Ooh no, something went wrong!