Unix / Linux - Utilizzo delle variabili di shell
In questo capitolo impareremo come usare le variabili Shell in Unix. Una variabile è una stringa di caratteri a cui assegniamo un valore. Il valore assegnato potrebbe essere un numero, testo, nome file, dispositivo o qualsiasi altro tipo di dati.
Una variabile non è altro che un puntatore ai dati effettivi. La shell consente di creare, assegnare ed eliminare variabili.
Nomi variabili
Il nome di una variabile può contenere solo lettere (dalla a alla z o dalla A alla Z), numeri (da 0 a 9) o il carattere di sottolineatura (_).
Per convenzione, le variabili di shell Unix avranno i loro nomi in MAIUSCOLO.
I seguenti esempi sono nomi di variabili validi:
_ALI
TOKEN_A
VAR_1
VAR_2
Di seguito sono riportati gli esempi di nomi di variabili non validi:
2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!
Il motivo per cui non puoi usare altri caratteri come !, *, o - è che questi caratteri hanno un significato speciale per la shell.
Definizione di variabili
Le variabili sono definite come segue:
variable_name=variable_value
Ad esempio:
NAME="Zara Ali"
L'esempio sopra definisce la variabile NOME e le assegna il valore "Zara Ali". Vengono chiamate variabili di questo tiposcalar variables. Una variabile scalare può contenere un solo valore alla volta.
Shell ti consente di memorizzare qualsiasi valore desideri in una variabile. Ad esempio:
VAR1="Zara Ali"
VAR2=100
Accesso ai valori
Per accedere al valore memorizzato in una variabile, anteporre al suo nome il segno del dollaro ($) -
Ad esempio, il seguente script accederà al valore della variabile definita NAME e lo stamperà su STDOUT -
#!/bin/sh
NAME="Zara Ali"
echo $NAME
Lo script sopra produrrà il seguente valore:
Zara Ali
Variabili di sola lettura
Shell fornisce un modo per contrassegnare le variabili come di sola lettura utilizzando il comando di sola lettura. Dopo che una variabile è stata contrassegnata come di sola lettura, il suo valore non può essere modificato.
Ad esempio, il seguente script genera un errore durante il tentativo di modificare il valore di NAME -
#!/bin/sh
NAME="Zara Ali"
readonly NAME
NAME="Qadiri"
Lo script sopra genererà il seguente risultato:
/bin/sh: NAME: This variable is read only.
Disinserimento delle variabili
L'annullamento o l'eliminazione di una variabile indica alla shell di rimuovere la variabile dall'elenco di variabili di cui tiene traccia. Dopo aver annullato l'impostazione di una variabile, non è possibile accedere al valore memorizzato nella variabile.
Di seguito è riportata la sintassi per annullare l'impostazione di una variabile definita utilizzando unset comando -
unset variable_name
Il comando precedente ripristina il valore di una variabile definita. Ecco un semplice esempio che dimostra come funziona il comando:
#!/bin/sh
NAME="Zara Ali"
unset NAME
echo $NAME
L'esempio sopra non stampa nulla. Non è possibile utilizzare il comando unset perunset variabili contrassegnate readonly.
Tipi di variabili
Quando una shell è in esecuzione, sono presenti tre tipi principali di variabili:
Local Variables- Una variabile locale è una variabile presente nell'istanza corrente della shell. Non è disponibile per i programmi avviati dalla shell. Sono impostati al prompt dei comandi.
Environment Variables- Una variabile d'ambiente è disponibile per qualsiasi processo figlio della shell. Alcuni programmi necessitano di variabili d'ambiente per funzionare correttamente. Di solito, uno script di shell definisce solo quelle variabili d'ambiente che sono necessarie ai programmi che esegue.
Shell Variables- Una variabile di shell è una variabile speciale impostata dalla shell ed è richiesta dalla shell per funzionare correttamente. Alcune di queste variabili sono variabili di ambiente mentre altre sono variabili locali.