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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capitolo 29. Debugging<br />

Nota: Fornendo DEBUG come argomento a trap, viene eseguita l’azione specificata dopo ogni<br />

comando presente nello script. Questo consente, per esempio, il tracciamento delle variabili.<br />

Esempio 29-7. Tracciare una variabile<br />

#!/bin/bash<br />

trap ’echo "TRACCIA-VARIABILE> \$variabile = \"$variabile\""’ DEBUG<br />

# Visualizza il valore <strong>di</strong> $variabile dopo l’esecuzione <strong>di</strong> ogni comando.<br />

variabile=29;<br />

echo "La \"\$variabile\" è stata inizializzata a $variabile."<br />

let "variabile *= 3"<br />

echo "\"\$variabile\" è stata moltiplicata per 3."<br />

exit $?<br />

# Il costrutto "trap ’comando1 . . . comando2 . . .’ DEBUG" è più<br />

#+ appropriato nel contesto <strong>di</strong> uno script complesso,<br />

#+ dove l’inserimento <strong>di</strong> molti enunciati "echo $variabile"<br />

#+ si rivela goffo, oltre che una per<strong>di</strong>ta <strong>di</strong> tempo.<br />

# Grazie, Stephane Chazelas per la puntualizzazione.<br />

exit 0<br />

Risultato dello script:<br />

TRACCIA-VARIABILE> $variabile = ""<br />

TRACCIA-VARIABILE> $variabile = "29"<br />

La "$variabile" è stata inizializzata a 29.<br />

TRACCIA-VARIABILE> $variabile = "29"<br />

TRACCIA-VARIABILE> $variabile = "87"<br />

La "$variabile" è stata moltiplicata per 3.<br />

TRACCIA-VARIABILE> $variabile = "87"<br />

Naturalmente, il comando trap viene impiegato per altri scopi oltre a quello per il debugging.<br />

Esempio 29-8. Esecuzione <strong>di</strong> processi multipli (su una postazione SMP)<br />

#!/bin/bash<br />

# parent.sh<br />

# Eseguire processi multipli su una postazione SMP.<br />

# Autore: Tedman Eng<br />

# Questo è il primo <strong>di</strong> due script,<br />

#+ entrambi i quali devono essere presenti nella <strong>di</strong>rectory <strong>di</strong> lavoro corrente.<br />

522

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

Saved successfully!

Ooh no, something went wrong!