Anche lo shell scripting prevede la possibilità di scrivere delle funzioni. Una funzione è una porzione di codice indipendente alla quale viene assegnata, appunto, una specifica funzione all’interno del programma.
Scrivere funzioni è molto utile quando si deve compire una determinata operazione complessa più di una volta all’interno dello stesso programma o della stessa suite di programmi. Grazie alle funzioni si evita, infatti, di riscrivere più volte il medesimo codice operativo ma ci si limita a richiamare la funzione alla quale è stato adibito quello specifico compito.
Una funzione può essere scritta all’interno dello script oppure su un file separato da includersi nello o negli script che usufruiranno della funzione.
Vediamo nell’esempio una semplice funzione scritta su un apposito file (separato dallo script principale) che chiameremo “miafunzione.lib”:
#Attenzione!!!
#Non va messo #!/bin/sh
#Funzione per il calcolo del prezzo di una merce
#compreso di IVA.
#La funzione prevede, quale unico parametro, il
#prezzo al netto dell'iva.
tot_iva() {
IVA=`expr $1 / 100`
IVA=`expr $IVA \* 20`
TOT=`expr $1 + $IVA`
echo $TOT
}
Come abbiamo visto la sintassi è data dal nome della funzione seguita da () e da una coppia di parentesi graffe al cuni interno viene inserito il codice operativo.
Ora vediamo il contenuto dello script principale che richiama il file “miafunzione.lib” per poterne sfruttare le potenzialità:
#!/bin/sh
#Includo il file miafunzione.lib
#Nel nostro es. il file si trova nella stessa directory
. ./miafunzione.lib
#Definisco due variabili contenenti il prezzo
#netto (senza IVA) di due ipotetici prodotti
VHS=10
DVD=20
#Richiamo la funzione per calcolare il prezzo compreso IVA
echo "Prezzo di una VHS compreso Iva: `tot_iva $VHS` Euro"
echo "Prezzo di un DVD compreso Iva: `tot_iva $DVD` Euro"
Come risulta intuitivo non sarà necessario scrivere più volte il codice per il calcolo del prezzo totale… basterà scriverlo una volta nella funzione e poi richiamare quest’ultima quante volte la si necessita.