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.

Capitolo 7. Verifiche<br />

Nota: Dopo un if non sono strettamente necessari né il comando test né i costrutti parentesi quadre<br />

( [ ] o [[ ]] ).<br />

<strong>di</strong>r=/home/bozo<br />

if cd "$<strong>di</strong>r" 2>/dev/null; then # "2>/dev/null" sopprime il messaggio d’errore.<br />

echo "Ora sei in $<strong>di</strong>r."<br />

else<br />

echo "Non riesco a cambiare in $<strong>di</strong>r."<br />

fi<br />

Il costrutto "if COMANDO" restituisce l’exit status <strong>di</strong> COMANDO.<br />

Per questo motivo, una con<strong>di</strong>zione tra parentesi quadre può essere utilizzata da sola, senza if, se<br />

abbinata ad un costrutto lista.<br />

var1=20<br />

var2=22<br />

[ "$var1" -ne "$var2" ] && echo "$var1 è <strong>di</strong>versa da $var2"<br />

home=/home/bozo<br />

[ -d "$home" ] || echo "La <strong>di</strong>rectory $home non esiste."<br />

Il costrutto (( )) espande e valuta un’espressione aritmetica. Se il risultato della valutazione<br />

dell’espressione è zero, viene restituito come exit status 1, ovvero “falso”. Una valutazione <strong>di</strong>versa da<br />

zero restituisce come exit status 0, ovvero “vero”. Questo è in contrasto marcato con l’utilizzo <strong>di</strong> test e<br />

dei costrutti [ ] precedentemente <strong>di</strong>scussi.<br />

Esempio 7-3. Verifiche aritmetiche utilizzando (( ))<br />

#!/bin/bash<br />

# Verifiche aritmetiche.<br />

# Il costrutto (( ... )) valuta e verifica le espressioni aritmetiche.<br />

# Exit status opposto a quello fornito dal costrutto [ ... ]!<br />

(( 0 ))<br />

echo "l’exit status <strong>di</strong> \"(( 0 ))\" è $?." # 1<br />

(( 1 ))<br />

echo "L’exit status <strong>di</strong> \"(( 1 ))\" è $?." # 0<br />

(( 5 > 4 )) # vero<br />

echo "L’exit status <strong>di</strong> \"(( 5 > 4 ))\" è $?." # 0<br />

(( 5 > 9 )) # falso<br />

echo "L’exit status <strong>di</strong> \"(( 5 > 9 ))\" è $?." # 1<br />

(( 5 - 5 )) # 0<br />

echo "L’exit status <strong>di</strong> \"(( 5 - 5 ))\" è $?." # 1<br />

69

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

Saved successfully!

Ooh no, something went wrong!