Come avviene in molti linguaggi di programmazione, anche negli script bash � possibile creare delle funzioni che permettono di ripetere pi� volte porzioni di codice.
La sintassi per creare una funzione �:
nome_funzione()
{
codice_della_funzione
}
oppure
function nome_funzione()
{
codice_della_funzione
}
Come si pu� notare, la parola
function � opzionale.
Anche la presenza di parentesi alla fine del nome della funzione � opzionale; infatti, a differenza della maggior parte dei linguaggi di programmazione, negli scrip bash tutte le variabili hanno un carattere globale. Vediamo un esempio:
#!/bin/bash
# Questo scrip mostra come tutte le variabili siano globali.
# Il programma stampa a schermo "Funzione", e non "Programma Principale",
# come avverrebbe normalmente in C.
function cambia_variabile
{
variabile="Funzione"
}
# Main
variabile="Programma Principale"
cambia_variabile
echo "Variabile � stata modificata l'ultima volta da: $variabile"
Per rendere la variabile locale, cio� per far si che il suo valore non venga modificato nel main, possiamo usare l'attrobuto
local. Riprendendo il precedente esempio:
#!/bin/bash
# Questo scrip mostra come rendere locale una variabile all'interno
# di una funzione.
# Il programma stampa a schermo "Programma Principale", e non "Funzione",
# come avverrebbe normalmente in uno scrip bash, in cui le variabili in
# funzioni e programma principale sono globali.
function cambia_variabile
{
local variabile="Funzione"
}
# Main
variabile="Programma Principale"
cambia_variabile
echo "Variabile � stata modificata l'ultima volta da: $variabile"
Possiamo passare i parametri a una funzione utilizzando i parametri da riga di comando (che vedremo in seguito), come mostra il seguente esempio:
#!/bin/bash
# In questo esempio vengono passati alla funzione i valori
# 2 e 4 tramite i parametri da riga di comando
function mia_funzione
{
var1=$1
var2=$2
echo "Valori passati: $var1 e $var2"
}
mia_funzione 2 4