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.

echo<br />

Capitolo 7. Verifiche<br />

if [ -z "$1" ] # Funzionalità identica al precedente blocco<br />

#+ <strong>di</strong> co<strong>di</strong>ce.<br />

# if [ -z "$1" dovrebbe funzionare, ma...<br />

#+ <strong>Bash</strong> risponde con il messaggio d’errore <strong>di</strong> missing close-bracket.<br />

then<br />

echo "Nessun argomento da riga <strong>di</strong> comando."<br />

else<br />

echo "Il primo argomento da riga <strong>di</strong> comando è $1."<br />

fi<br />

echo<br />

if /usr/bin/[ -z "$1" ] # Ancora, funzionalità identica alla precedente.<br />

# if /usr/bin/[ -z "$1" # Funziona, ma dà un messaggio d’errore.<br />

# # Nota:<br />

# Il problema è stato risolto<br />

# + nella versione <strong>Bash</strong> 3.x<br />

then<br />

echo "Nessun argomento da riga <strong>di</strong> comando."<br />

else<br />

echo "Il primo argomento da riga <strong>di</strong> comando è $1."<br />

fi<br />

echo<br />

exit 0<br />

Il costrutto [[ ]] è la versione <strong>Bash</strong> più versatile <strong>di</strong> [ ]. È il comando <strong>di</strong> verifica esteso, adottato da ksh88.<br />

Nota: Non può aver luogo alcuna espansione <strong>di</strong> nome <strong>di</strong> file o <strong>di</strong>visione <strong>di</strong> parole tra [[ e ]], mentre<br />

sono consentite l’espansione <strong>di</strong> parametro e la sostituzione <strong>di</strong> comando.<br />

file=/etc/passwd<br />

if [[ -e $file ]]<br />

then<br />

echo "Il file password esiste."<br />

fi<br />

Suggerimento: L’utilizzo del costrutto <strong>di</strong> verifica [[ ... ]] al posto <strong>di</strong> [ ... ] può evitare molti errori logici<br />

negli script. Per esempio, gli operatori &&, ||, < e > funzionano correttamente in una verifica [[ ]],<br />

mentre potrebbero dare degli errori con il costrutto [ ] .<br />

68

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

Saved successfully!

Ooh no, something went wrong!