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.

trap<br />

Capitolo 29. Debugging<br />

# ...<br />

echo "Questo enunciato viene visualizzato solo se \"assert\" non fallisce."<br />

# ...<br />

# Alcuni altri coman<strong>di</strong>.<br />

exit 0<br />

5. Usare la variabile $LINENO con il builtin caller.<br />

6. eseguire una trap <strong>di</strong> exit.<br />

Il comando exit, , in uno script, lancia il segnale 0 che termina il processo, cioè, lo script stesso. 2 È<br />

spesso utile eseguire una trap <strong>di</strong> exit, per esempio, per forzare la “visualizzazione” delle variabili.<br />

trap deve essere il primo comando dello script.<br />

Trap dei segnali<br />

Specifica un’azione che deve essere eseguita alla ricezione <strong>di</strong> un segnale; è utile anche per il<br />

debugging.<br />

Nota: Un segnale è semplicemente un messaggio inviato ad un processo, o dal kernel o da un altro<br />

processo, che gli comunica <strong>di</strong> eseguire un’azione specifica (solitamente <strong>di</strong> terminare). Per<br />

esempio, la pressione <strong>di</strong> Control-C invia un interrupt utente, il segnale INT, al programma in<br />

esecuzione.<br />

trap ” 2<br />

# Ignora l’interrupt 2 (Control-C), senza alcuna azione specificata.<br />

trap ’echo "Control-C <strong>di</strong>sabilitato."’ 2<br />

# Messaggio visualizzato quando si <strong>di</strong>gita Control-C.<br />

Esempio 29-5. Trap <strong>di</strong> exit<br />

#!/bin/bash<br />

# Andare a caccia <strong>di</strong> variabili con trap.<br />

trap ’echo Elenco Variabili --- a = $a b = $b’ EXIT<br />

# EXIT è il nome del segnale generato all’uscita dallo script.<br />

# Il comando specificato in "trap" non viene eseguito finché<br />

#+ non è stato inviato il segnale appropriato.<br />

echo "Questa visualizzazione viene eseguita prima <strong>di</strong> \"trap\" --"<br />

echo "nonostante lo script veda prima \"trap\"."<br />

519

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

Saved successfully!

Ooh no, something went wrong!