9.4. Variabili

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
VariabileUsoshcsh
$#numero di argomenti su linea di comandox 
$-opzioni fornite alla shellx 
$?valore di uscita dell'ultimo comando eseguitox 
$$numero id del processo correntexx
$!numero di processo dell'ultimo comando messo in backgroundx 
$nargomento su linea di comando, dove n varia tra 1 e 9, leggendo da sinistra a destraxx
$0il nome della shell corrente o del programma correntexx
$*tutti gli argomenti su linea di comando ("$1 $2 ... $9")xx
$@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
$#argvriporta 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>.