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 23. Funzioni<br />

saluti_bozo # Funziona solo per Bozo, agli altri utenti dà un errore.<br />

# Qualcosa <strong>di</strong> simile potrebbe essere utile in certi contesti.<br />

NO_EXIT=1 # Abilita la definizione <strong>di</strong> funzione seguente.<br />

[[ $NO_EXIT -eq 1 ]] && exit() { true; } # Definizione <strong>di</strong> funzione<br />

#+ in una "lista and".<br />

# Se $NO_EXIT è uguale a 1, viene <strong>di</strong>chiarata "exit ()".<br />

# Così si <strong>di</strong>sabilita il builtin "exit" rendendolo un alias <strong>di</strong> "true".<br />

exit # Viene invocata la funzione "exit ()", non il builtin "exit".<br />

# Grazie, S.C.<br />

23.1. Funzioni complesse e complessità delle funzioni<br />

Le funzioni possono elaborare gli argomenti che ad esse vengono passati e restituire un exit status allo<br />

script per le successive elaborazioni.<br />

nome_funzione $arg1 $arg2<br />

La funzione fa riferimento agli argomenti passati in base alla loro posizione (come se fossero parametri<br />

posizionali), vale a <strong>di</strong>re, $1, $2, eccetera.<br />

Esempio 23-2. Funzione con parametri<br />

#!/bin/bash<br />

# Funzioni e parametri<br />

DEFAULT=predefinito # Valore predefinito del parametro<br />

funz2 () {<br />

if [ -z "$1" ] # Il parametro nr.1 è vuoto (lunghezza zero)?<br />

then<br />

echo "-Il parametro nr.1 ha lunghezza zero.-" # O non è stato passato<br />

#+ alcun parametro.<br />

else<br />

echo "-Il parametro nr.1 è \"$1\".-"<br />

fi<br />

variabile=${1-$DEFAULT} # Cosa rappresenta<br />

echo "variabile = $variabile" #+ la sostituzione <strong>di</strong> parametro?<br />

# -------------------------------------<br />

# Fa <strong>di</strong>stinzione tra nessun parametro e<br />

#+ parametro nullo.<br />

447

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

Saved successfully!

Ooh no, something went wrong!