La shell Bourne permette di definire funzioni. Queste sono molto simili agli alias della shell C, ma permettono più flessibilità. Una funzione ha la forma:
funzione
() {
comando
; }
dove lo spazio dopo { e il punto e virgola (;) sono obbligatori;
il punto e virgola può essere omesso facendo precedere a } un
newline. Spazi e newline aggiuntivi sono permessi.
Alcuni esempi di funzioni possono essere visti nel semplice file
.profile
discusso nei primi capitoli, dove si avevano
delle funzioni per ls
e ll
:
ls() { /bin/ls -sbF "$@";}
ll() { ls -al "$@";}
La prima funzione ridefinisce ls(1) affinchè le opzioni
-sbF
siano sempre fornite dal comando standard
/bin/ls
e in modo da agire in base all'input fornito,
$@
. La seconda di queste funzioni prende il valore
corrente di ls
(la funzione precedente) e aggiunge le
opzioni -al
.
Le funzioni sono molto utili negli script di shell. Il seguente script è una versione semplificata di uno script utilizzato per effettuare automaticamente il backup su nastro delle partizioni di sistema.
Questo script illustra alcuni argomenti che sono stati trattati in
questo documento. Lo script inizia settando i valori di alcuni parametri.
HOST
viene inizializzato dall'output di un comando,
admin
è l'amministratore di sistema,
Mt
, Dump
e Mail
sono nomi di programmi, device
è il dispositivo
speciale usato per accedere al nastro, Rewind
e
Offline
contengono i comandi rispettivamente per
riavvolgere e scaricare il nastro usando il riferimento
Mt
e le necessarie opzioni. Vengono definite
tre funzioni: failure
, dumpfail
e
success
. Tutte le funzioni in questo script utilizzano
la forma here document per realizzare il contenuto
della funzione stessa. Si introducono ora gli operatori logici
OR (||) e
AND (&&); ciascuno è
posizionato tra una coppia di comandi. Per l'operatore
OR, il secondo comando viene eseguito solamente se
il primo comando non è stato completato con successo. Per
l'operatore AND, il secondo comando viene
eseguito solamente se il primo comando è stato completato con
successo.
Lo scopo principale dello script è realizzare i comandi
Dump
, ad esempio copiando i file system specificati.
Prima si tenta di eseguire il riavvolgimento del nastro. Se questo
fallisce, || failure
, si esegue la funzione
failure
e si esce dal programma. Se invece questo ha
successo si procede con il backup a turno di ogni partizione, ogni volta
verificando che questa operazione sia completamente riuscita
(|| dumpfail
). Se questa operazione non viene eseguita
completamente con successo si esegue la procedura
dumpfail
e si esce. Se l'ultimo backup ha successo si
procede con la funzione success
((...) &&
success
). In fine si riavvolge il nastro e lo si manda fuori
linea affinchè altri utenti non possano accidentalmente scriverci
sopra.
Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Per domande su FreeBSD, leggi la
documentazione prima di contattare
<questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a
<doc@FreeBSD.org>.