Alcune variabili sono automaticamente inizializzate all'avvio della shell. Queste variabili permettono di riferirsi agli argomenti su linea di comando.
Queste variabili di shell sono:
Tabella 9-1. Variabili di shell
| Variabile | Uso | sh | csh |
|---|---|---|---|
| $# | numero di argomenti su linea di comando | x | |
| $- | opzioni fornite alla shell | x | |
| $? | valore di uscita dell'ultimo comando eseguito | x | |
| $$ | numero id del processo corrente | x | x |
| $! | numero di processo dell'ultimo comando messo in background | x | |
| $n | argomento su linea di comando, dove n varia tra 1 e 9, leggendo da sinistra a destra | x | x |
| $0 | il nome della shell corrente o del programma corrente | x | x |
| $* | tutti gli argomenti su linea di comando ("$1 $2 ... $9") | x | x |
| $@ | tutti gli argomenti su linea di comando, ciascuno quotato separatamente ("$1" "$2" ... "$9") | x | |
| $argv[n] | seleziona l'n-esima parola dalla lista di input | x | |
| ${argv[n]} | come sopra | x | |
| $#argv | riporta il numero di parole della lista di input | x |
L'uso di queste variabili può essere illustrato con alcuni semplici script. Per la shell Bourne lo script potrebbe essere:
#!/bin/sh echo "$#:" $# echo '$#:' $# echo '$-:' $- echo '$?:' $? echo '$$:' $$ echo '$!:' $! echo '$3:' $3 echo '$0:' $0 echo '$*:' $* echo '$@:' $@
Quando viene eseguito con alcuni argomenti, mostra i valori delle variabili di shell, esempio:
$ ./variables.sh one two three four five 5: 5 $#: 5 $-: $?: 0 $$: 12417 $!: $3: three $0: ./variables.sh $*: one two three four five $@: one two three four five
Come si può notare, si ha la necessità di usare un carattere di quoting singolo per impedire alla shell di assegnare significati speciali a $. Il carattere di quoting doppio, come nella prima struttura echo, permette di rimpiazzare il nome della variabile con il suo valore.
Similmente, per le variabili della shell C si possono illustrare le sostituzioni di variabili tramite il seguente script:
#!/bin/csh -f
echo '$$:' $$
echo '$3:' $3
echo '$0:' $0
echo '$*:' $*
echo '$argv[2]:' $argv[2]
echo '${argv[4]}:' ${argv[4]}
echo '$#argv:' $#argv
che quando eseguito con alcuni argomenti mostra il risultato seguente:
% ./variables.csh one two three four five
$$: 12419
$3: three
$0: ./variables.csh
$*: one two three four five
$argv[2]: two
${argv[4]}: four
$#argv: 5
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>.