Questo articolo fa parte della nostra serie di tutorial bash in corso. Come qualsiasi altro linguaggio di programmazione, anche Bash fornisce variabili.
Le variabili Bash forniscono una memoria temporanea per le informazioni che saranno necessarie durante la vita del programma.
Sintassi:
VARNAME=VALUE
Nota: Non dovrebbe esserci spazio intorno al segno "=" nell'assegnazione della variabile. Quando si utilizza VAR=VALUE, la shell vede "=" come un simbolo e tratta il comando come un'assegnazione di variabile. Quando usi VAR =VALUE, la shell presume che VAR debba essere il nome di un comando e prova ad eseguirlo.
Shell non si preoccupa del tipo di variabili. Le variabili possono memorizzare stringhe, numeri interi o reali.
Esempio.1 Utilizzo dell'assegnazione di variabili Bash semplice
Lo script seguente crea una variabile chiamata LIST e assegna il valore “/var/opt/bin”. Per accedere alle variabili, anteponi al nome della variabile $, che ti darà il valore memorizzato in quella variabile.
$ cat sample.sh #!/bin/bash LIST="/var/opt/bin/" ls -l $LIST
Esegui lo script sopra, che elencherà /var/opt/bin in formato lungo come mostrato di seguito.
$ ./sample.sh total 8 drwxrwsr-x 2 bin bin 4096 Jan 29 06:43 softwares drwxr-sr-x 5 root bin 4096 Sep 2 2009 llist
Ambito della variabile Bash:locale e globale
In Bash, le variabili non devono essere dichiarate. Tuttavia, quando accedi alla variabile che non è stata utilizzata finora, non riceverai alcun messaggio di avviso o errore. Verrà invece visualizzato un valore vuoto.
Esempio 2. Valori vuoti nelle variabili bash
$ cat var1.sh #!/bin/sh echo "Variable value is: $VAR1" VAR1="GEEKSTUFF" echo "Variable value is: $VAR1" $ ./var1.sh Variable value is: Variable value is: GEEKSTUFF
Come mostrato sopra, inizialmente la variabile avrà un valore vuoto, dopo l'assegnazione, puoi ottenere i tuoi valori. Il comando export viene utilizzato per esportare una variabile da una shell interattiva. export mostra l'effetto sull'ambito delle variabili.
Esempio 3. Variabili Bash senza esportazione
Assegna una variabile con un valore in una shell interattiva e prova ad accedere alla stessa nello script della tua shell.
$ VAR2=LINUX $ cat var2.sh #!/bin/bash echo "VAR2=$VAR2" VAR2=UNIX echo "VAR2=$VAR2"
Ora, esegui lo script sopra come mostrato di seguito.
$ ./var2.sh VAR2= VAR2=UNIX
Tuttavia otterrai un valore vuoto per la variabile VAR2. La shell memorizza la variabile VAR2 con LINUX solo nella shell corrente. Durante l'esecuzione di var2.sh, genera la shell ed esegue lo script. Quindi la variabile VAR2 non avrà il valore nella shell generata. È necessario esportare la variabile affinché venga ereditata da un altro programma, incluso uno script di shell, come mostrato di seguito.
Esempio 4. Esportazione di una variabile Bash
$ export VAR2=LINUX $ cat var2.sh #!/bin/bash echo "VAR2=$VAR2" VAR2=UNIX echo "VAR2=$VAR2"
Ora esegui lo script sopra.
$ ./var2.sh VAR2=LINUX VAR2=UNIX $ $echo $VAR2 LINUX
Ora puoi notare che dopo l'esecuzione dello script di shell var2.sh, il valore di VAR2 è LINUX. Perché le variabili non verranno restituite alla tua shell interattiva, a meno che tu non esegua lo script nella shell corrente.
Dichiarazione di una variabile Bash
Usando l'istruzione dichiara in bash, possiamo limitare il valore assegnato alle variabili. Limita le proprietà delle variabili. L'opzione in un'istruzione dichiara viene utilizzata per determinare il tipo di una variabile.
Sintassi:
declare option variablename
- dichiarare è una parola chiave L'opzione
- potrebbe essere:
- -r variabile di sola lettura
- -i variabile intera
- -una variabile di matrice
- -f per le funzioni
- -x dichiara ed esporta ai comandi successivi tramite l'ambiente.
Esempio 5. Dichiarazione di una variabile Bash usando la dichiarazione
$ cat declar.sh #!/bin/bash declare -i intvar intvar=123 # Assigning integer value. echo $intvar intvar=12.3 #Trying to store string type value to an integer variable echo $intvar declare -r rovar=281 rovar=212 # Trying to change the readonly variable.
Dall'esecuzione seguente, puoi notare il messaggio di errore quando assegni dati non validi a una variabile.
$ ./declar.sh 123 t.sh: line 6: 12.3: syntax error: invalid arithmetic operator (error token is ".3") 123 t.sh: line 11: rovar: readonly variable
Variabili Bash globali
Le variabili globali sono anche chiamate variabili d'ambiente, che saranno disponibili per tutte le shell. Il comando printenv viene utilizzato per visualizzare tutte le variabili d'ambiente.
$ printenv SHELL=/bin/bash HISTSIZE=1000 SSH_TTY=/dev/pts/1 HOME=/root LOGNAME=root CVS_RSH=ssh
Variabili Bash locali
Le variabili locali sono visibili solo all'interno del blocco di codice. local è una parola chiave che viene utilizzata per dichiarare le variabili locali. In una funzione, una variabile locale ha significato solo all'interno di quel blocco funzione.
Esempio 6. Variabili Bash globali e locali
$ cat localvar.sh #!/bin/bash pprint() { local lvar="Local content" echo -e "Local variable value with in the function" echo $lvar gvar="Global content changed" echo -e "Global variable value with in the function" echo $gvar } gvar="Global content" echo -e "Global variable value before calling function" echo $gvar echo -e "Local variable value before calling function" echo $lvar pprint echo -e "Global variable value after calling function" echo $gvar echo -e "Local variable value after calling function" echo $lvar
Esegui lo script sopra,
$ sh t.sh Global variable value before calling function Global content Local variable value before calling function Local variable value with in the function Local content Global variable value with in the function Global content changed Global variable value after calling function Global content changed Local variable value after calling function
Nell'output sopra, le variabili locali avranno solo un valore vuoto prima e dopo aver chiamato la funzione. Il suo scopo è solo con nella funzione. È scomparso dalla funzione, mentre la variabile globale ha il valore aggiornato anche dopo l'esecuzione della funzione.