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.

funz ()<br />

{<br />

echo "$1"<br />

}<br />

Capitolo 23. Funzioni<br />

echo "Prima chiamata della funzione: non viene passato alcun argomento."<br />

echo "Ve<strong>di</strong>amo se l’argomento da riga <strong>di</strong> comando viene rilevato."<br />

funz<br />

# No! Non è stato rilevato.<br />

echo "============================================================"<br />

echo<br />

echo "Seconda chiamata della funzione:\<br />

argomento da riga <strong>di</strong> comado passato esplicitamente."<br />

funz $1<br />

# Ora è stato rilevato!<br />

exit 0<br />

Rispetto ad alcuni altri linguaggi <strong>di</strong> programmazione, gli script <strong>di</strong> shell normalmente passano i parametri<br />

alle funzioni solo per valore. I nomi delle variabili (che in realtà sono dei puntatori), se passati come<br />

parametri alle funzioni, vengono trattati come stringhe. Le funzioni interpretano i loro argomenti<br />

letteralmente.<br />

La referenziazione in<strong>di</strong>retta a variabili (ve<strong>di</strong> Esempio 34-2) offre una specie <strong>di</strong> meccanismo, un po’<br />

goffo, per passare i puntatori a variabile alle funzioni.<br />

Esempio 23-4. Passare una referenziazione in<strong>di</strong>retta a una funzione<br />

#!/bin/bash<br />

# ind-func.sh: Passare una referenziazione in<strong>di</strong>retta a una funzione.<br />

var_echo ()<br />

{<br />

echo "$1"<br />

}<br />

messaggio=Ciao<br />

Ciao=Arrivederci<br />

var_echo "$messaggio" # Ciao<br />

# Adesso passiamo una referenziazione in<strong>di</strong>retta alla funzione.<br />

var_echo "${!messaggio}" # Arrivederci<br />

echo "-------------"<br />

# Cosa succede se mo<strong>di</strong>fichiamo il contenuto della variabile "Ciao"?<br />

Ciao="Ancora ciao!"<br />

var_echo "$messaggio" # Ciao<br />

var_echo "${!messaggio}" # Ancora ciao!<br />

449

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

Saved successfully!

Ooh no, something went wrong!