9.5. Sostituzione di parametri
Indietro | Capitolo 9. Programmazione di shell | Avanti

## 9.5. Sostituzione di parametri

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

Indietro | Risali | Avanti
9.4. Variabili | Partenza | 9.6. Here document

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>.