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.

#!/bin/bash<br />

COMANDO1<br />

. . .<br />

# Esce con lo status dell’ultimo comando.<br />

ULTIMO_COMANDO<br />

Capitolo 6. Exit ed exit status<br />

$? legge l’exit status dell’ultimo comando eseguito. Dopo l’esecuzione <strong>di</strong> una funzione, $? fornisce<br />

l’exit status dell’ultimo comando eseguito nella funzione. Questo è il modo che <strong>Bash</strong> ha per consentire<br />

alle funzioni <strong>di</strong> restituire un “valore <strong>di</strong> ritorno”. Al termine <strong>di</strong> uno script, <strong>di</strong>gitando $? da riga <strong>di</strong><br />

comando, si ottiene l’exit status dello script, cioè, dell’ultimo comando eseguito che, per convenzione, è<br />

0 in caso <strong>di</strong> successo o un intero compreso tra 1 e 255 in caso <strong>di</strong> errore.<br />

Esempio 6-1. exit / exit status<br />

#!/bin/bash<br />

echo ciao<br />

echo $? # Exit status 0 perché il comando è stato eseguito con successo.<br />

lskdf # Comando sconosciuto.<br />

echo $? # Exit status <strong>di</strong>verso da zero perché il comando non ha<br />

#+ avuto successo.<br />

echo<br />

exit 113 # Restituirà 113 alla shell.<br />

# Per verificarlo, <strong>di</strong>gitate "echo $?" dopo l’esecuzione dello script.<br />

# Convenzionalmente, un ’exit 0’ in<strong>di</strong>ca successo,<br />

#+ mentre un valore <strong>di</strong>verso significa errore o con<strong>di</strong>zione anomala.<br />

$? è particolarmente utile per la verifica del risultato <strong>di</strong> un comando in uno script (ve<strong>di</strong> Esempio 12-32 e<br />

Esempio 12-17).<br />

Nota: Il !, l’operatore logico “not”, inverte il risultato <strong>di</strong> una verifica o <strong>di</strong> un comando e questo si<br />

ripercuote sul relativo exit status.<br />

Esempio 6-2. Negare una con<strong>di</strong>zione utilizzando !<br />

true # il builtin "true".<br />

echo "exit status <strong>di</strong> \"true\" = $?" # 0<br />

! true<br />

echo "exit status <strong>di</strong> \"! true\" = $?" # 1<br />

60

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

Saved successfully!

Ooh no, something went wrong!