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.