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.

then<br />

echo "Utilizzo: ‘basename $0‘ intero"<br />

exit $E_ERR_INPUT<br />

fi<br />

let "somma = $1 + 25" # Darebbe un errore se $1 non<br />

#+ fosse un intero.<br />

echo "Somma = $somma"<br />

# In questo modo si può verificare qualsiasi variabile,<br />

#+ non solo i parametri passati da riga <strong>di</strong> comando.<br />

exit 0<br />

Capitolo 33. Miscellanea<br />

• L’intervallo 0 - 255, per i valori <strong>di</strong> ritorno <strong>di</strong> una funzione, rappresenta una seria limitazione. Anche<br />

l’impiego <strong>di</strong> variabili globali ed altri espe<strong>di</strong>enti spesso si rivela problematico. Un metodo alternativo<br />

che permette alla funzione <strong>di</strong> restituire un valore allo script, è fare in modo che questa scriva il “valore<br />

<strong>di</strong> ritorno” allo stdout (solitamente con echo) per poi assegnarlo a una variabile. In realtà si tratta <strong>di</strong><br />

una variante della sostituzione <strong>di</strong> comando.<br />

Esempio 33-15. Uno stratagemma per il valore <strong>di</strong> ritorno<br />

#!/bin/bash<br />

# multiplication.sh<br />

moltiplica () # Moltiplica i parametri passati.<br />

{ # Accetta un numero variabile <strong>di</strong> argomenti.<br />

local prodotto=1<br />

until [ -z "$1" ] # Finché ci sono parametri...<br />

do<br />

let "prodotto *= $1"<br />

shift<br />

done<br />

echo $prodotto # Lo visualizza allo stdout,<br />

} #+ poiché verrà assegnato ad una variabile.<br />

molt1=15383; molt2=25211<br />

val1=‘moltiplica $molt1 $molt2‘<br />

echo "$molt1 X $molt2 = $val1"<br />

# 387820813<br />

molt1=25; molt2=5; molt3=20<br />

val2=‘moltiplica $molt1 $molt2 $molt3‘<br />

echo "$molt1 X $molt2 X $molt3 = $val2"<br />

# 2500<br />

molt1=188; molt2=37; molt3=25; molt4=47<br />

577

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

Saved successfully!

Ooh no, something went wrong!