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.

Riepilogo dei sintomi <strong>di</strong> uno script errato:<br />

1. Comparsa del messaggio “syntax error”, oppure<br />

2. Va in esecuzione, ma non funziona come dovrebbe (errore logico);<br />

Capitolo 29. Debugging<br />

3. Viene eseguito, funziona come ci si attendeva, ma provoca pericolosi effetti collaterali (bomba<br />

logica).<br />

Gli strumenti per la correzione <strong>di</strong> script non funzionanti comprendono<br />

1. gli enunciati echo posti in punti cruciali dello script, per tracciare le variabili ed avere così un quadro<br />

<strong>di</strong> quello che sta avvenendo.<br />

Suggerimento: Ancor meglio è un echo che visualizza qualcosa solo quando è abilitato debug.<br />

### debecho (debug-echo), <strong>di</strong> Stefano Falsetto ###<br />

### Visualizza i parametri passati solo se DEBUG non è vuota. ###<br />

debecho () {<br />

if [ ! -z "$DEBUG" ]; then<br />

echo "$1" >&2<br />

# ^^^ allo stderr<br />

fi<br />

}<br />

DEBUG=on<br />

Quel_che_vuoi=non_nulla<br />

debecho $Quel_che_vuoi # non_nulla<br />

DEBUG=<br />

Quel_che_vuoi=non_nulla<br />

debecho $Quel_che_vuoi # (Nessuna visualizzazione.)<br />

2. l’uso del filtro tee nei punti critici per verificare i processi e i flussi <strong>di</strong> dati.<br />

3. eseguire lo script con le opzioni -n -v -x<br />

sh -n nomescript verifica gli errori <strong>di</strong> sintassi senza dover eseguire realmente lo script.<br />

Equivale ad inserire nello script set -n o set -o noexec. È da notare che alcuni tipi <strong>di</strong> errori<br />

<strong>di</strong> sintassi possono eludere questa verifica.<br />

sh -v nomescript visualizza ogni comando prima della sua esecuzione. Equivale ad inserire<br />

nello script set -v o set -o verbose.<br />

Le opzioni -n e -v agiscono bene insieme. sh -nv nomescript fornisce una verifica sintattica<br />

dettagliata.<br />

517

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

Saved successfully!

Ooh no, something went wrong!