Unix / Linux - Variabili speciali
In questo capitolo, discuteremo in dettaglio delle variabili speciali in Unix. In uno dei nostri capitoli precedenti, abbiamo capito come stare attenti quando usiamo certi caratteri non alfanumerici nei nomi delle variabili. Questo perché quei caratteri sono usati nei nomi di variabili speciali Unix. Queste variabili sono riservate per funzioni specifiche.
Ad esempio, il file $ il carattere rappresenta il numero ID del processo, o PID, della shell corrente -
$echo $$
Il comando precedente scrive il PID della shell corrente -
29949
La tabella seguente mostra una serie di variabili speciali che puoi usare negli script della shell:
Sr.No. | Variabile e descrizione |
---|---|
1 | $0 Il nome del file dello script corrente. |
2 | $n Queste variabili corrispondono agli argomenti con cui è stato richiamato uno script. Quin è un numero decimale positivo corrispondente alla posizione di un argomento (il primo argomento è $ 1, il secondo argomento è $ 2 e così via). |
3 | $# Il numero di argomenti forniti a uno script. |
4 | $* Tutti gli argomenti sono doppi. Se uno script riceve due argomenti, $ * è equivalente a$1 $2. |
5 | $@ Tutti gli argomenti sono singolarmente doppi. Se uno script riceve due argomenti, $ @ è equivalente a$1 $2. |
6 | $? Lo stato di uscita dell'ultimo comando eseguito. |
7 | $$ Il numero di processo della shell corrente. Per gli script di shell, questo è l'ID del processo con cui vengono eseguiti. |
8 | $! Il numero di processo dell'ultimo comando in background. |
Argomenti della riga di comando
Gli argomenti della riga di comando $ 1, $2, $3, ...$9 are positional parameters, with $0 che punta al comando, programma, script di shell o funzione effettivi e $1, $2, $3, ...$9 come argomenti del comando.
Lo script seguente utilizza varie variabili speciali relative alla riga di comando:
#!/bin/sh
echo "File Name: $0" echo "First Parameter : $1"
echo "Second Parameter : $2" echo "Quoted Values: $@"
echo "Quoted Values: $*" echo "Total Number of Parameters : $#"
Ecco un esempio di esecuzione per lo script precedente:
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
Parametri speciali $ * e $ @
Esistono parametri speciali che consentono di accedere contemporaneamente a tutti gli argomenti della riga di comando. $* e $@ entrambi agiranno allo stesso modo a meno che non siano racchiusi tra virgolette doppie, "".
Entrambi i parametri specificano gli argomenti della riga di comando. Tuttavia, il parametro speciale "$ *" accetta l'intero elenco come un argomento con spazi tra e il parametro speciale "$ @" prende l'intero elenco e lo separa in argomenti separati.
Possiamo scrivere lo script di shell come mostrato di seguito per elaborare un numero sconosciuto di argomenti della riga di comando con i parametri speciali $ * o $ @ -
#!/bin/sh
for TOKEN in $*
do
echo $TOKEN
done
Ecco un esempio di esecuzione per lo script precedente:
$./test.sh Zara Ali 10 Years Old
Zara
Ali
10
Years
Old
Note - Qui do...done è una sorta di ciclo che verrà trattato in un successivo tutorial.
Stato di uscita
Il $? variabile rappresenta lo stato di uscita del comando precedente.
Lo stato di uscita è un valore numerico restituito da ogni comando al suo completamento. Di norma, la maggior parte dei comandi restituisce uno stato di uscita 0 se hanno avuto successo e 1 se non hanno avuto successo.
Alcuni comandi restituiscono stati di uscita aggiuntivi per motivi particolari. Ad esempio, alcuni comandi distinguono tra tipi di errore e restituiranno vari valori di uscita a seconda del tipo specifico di errore.
Di seguito è riportato l'esempio di comando riuscito:
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$echo $?
0
$