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.

E_ERR_ARG=65<br />

E_ERR_MAXARG=66<br />

if [ -z "$1" ]<br />

then<br />

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

exit $E_ERR_ARG<br />

fi<br />

if [ "$1" -gt $MAX_ARG ]<br />

then<br />

echo "Valore troppo grande (il massimo è 5)."<br />

# Torniamo alla realtà.<br />

# Se fosse necessario un numero maggiore <strong>di</strong> questo,<br />

#+ riscrivete lo script in un vero linguaggio <strong>di</strong> programmazione.<br />

exit $E_ERR_MAXARG<br />

fi<br />

fatt ()<br />

{<br />

local numero=$1<br />

# La variabile "numero" deve essere <strong>di</strong>chiarata locale,<br />

#+ altrimenti questa funzione non svolge il suo compito.<br />

if [ "$numero" -eq 0 ]<br />

then<br />

fattoriale=1 # Il fattoriale <strong>di</strong> 0 è 1.<br />

else<br />

let "decrnum = numero - 1"<br />

fatt $decrnum # Chiamata ricorsiva della funzione<br />

#+ (la funzione richiama sé stessa).<br />

let "fattoriale = $numero * $?"<br />

fi<br />

}<br />

return $fattoriale<br />

fatt $1<br />

echo "Il fattoriale <strong>di</strong> $1 è $?."<br />

exit 0<br />

Capitolo 23. Funzioni<br />

Ve<strong>di</strong> anche Esempio A-16 per una <strong>di</strong>mostrazione <strong>di</strong> ricorsività in uno script. Si faccia attenzione che la<br />

ricorsività sfrutta intensivamente le risorse, viene eseguita lentamente e, <strong>di</strong> conseguenza, il suo uso, in<br />

uno script, non è appropriato.<br />

461

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

Saved successfully!

Ooh no, something went wrong!