Si può riferirsi ai parametri in modo astratto e sostituire i loro valori in base a delle condizioni, usando gli operatori definiti qui sotto. Ancora una volta si possono usare le parentesi graffe ({}) per isolare la variabile e il suo operatore.
$parametro | sostituisce questa stringa con il valore di parametro |
${parametro} | come sopra. Le parentesi sono d'aiuto se non c'è separazione tra questo parametro e una stringa adiacente. |
$parametro= | setta parametro a null. |
${parametro-default} | se parametro non è settato allora si usa default come valore. parametro non viene resettato. |
${parametro=default} | se parametro non è settato allora lo si setta a default e si usa il nuovo valore |
${parametro+nuovo_valore} | se parametro è settato allora si usa nuovo_valore altrimenti non si usa nulla. parametro non viene resettato. |
${parametro?messaggio} | se parametro non è settato allora si visualizza il messaggio. Se parametro è settato allora si usa il valore corrente. |
Non ci sono spazi nei precedenti operatori. Se un due punti (:) viene inserito prima di -, =, + o ? allora si effettua prima un test per vedere se il parametro ha un settaggio non-nullo.
La shell C ha alcuni modi aggiuntivi per la sostituzione di parametri:
$lista[n] | seleziona l'n-esima parola dalla lista |
${lista[n]} | come sopra |
$#lista | riporta il numero di parole in lista |
$?parametro | ritorna 1 se il parametro è settato, 0 altrimenti |
${?parametro} | come sopra |
$< | legge una linea da stdin(4) |
Inoltre la shell C definisce l'array $argv[n] per contenere gli n argomenti della linea di comando e $#argv per il numero di argomenti, come specificato in Tabella 9.1.
Per illustrare alcune di queste caratteristiche si userà il seguente script di prova:
#!/bin/sh param0=$0 test -n "$1" && param1=$1 test -n "$2" && param2=$2 test -n "$3" && param3=$3 echo 0: $param0 echo "1: ${param1-1}: \c" ;echo $param1 echo "2: ${param2=2}: \c" ;echo $param2 echo "3: ${param3+3}: \c" ;echo $param3
Inizialmente nello script si verifica con test(1) se la variabile esiste; in tal caso si setta il parametro al suo valore. Dopo si riportano i valori, effettuando le sostituzioni.
Nella prima esecuzione dello script non vengono forniti argomenti:
$ ./parameter.sh 0: ./parameter.sh # trova sempre $0 1: 1: # sostituisce 1, ma non assegna questo valore 2: 2: 2 # sostituisce 2 e assegna questo valore 3: : # non sostituisce
In questa seconda esecuzione dello script si forniscono alcuni argomenti:
$ ./parameter one two three 0: ./parameter.sh # trova sempre $0 1: one: one # non sostituisce, ha già un valore 2: two: two # non sostituisce, ha già un valore 3: 3: three # sostituisce 3 ma non assegna questo valore
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>.