Este artículo es parte de nuestra serie continua de tutoriales bash. Como cualquier otro lenguaje de programación, Bash también proporciona variables.
Las variables Bash brindan almacenamiento temporal para la información que se necesitará durante la vida útil del programa.
Sintaxis:
VARNAME=VALUE
Shell no se preocupa por el tipo de variables. Las variables pueden almacenar cadenas, enteros o números reales.
Ejemplo.1 Uso de la asignación de variables Bash simple
El siguiente script crea una variable llamada LISTA y le asigna el valor “/var/opt/bin”. Para acceder a las variables, simplemente prefije el nombre de la variable con $, lo que le dará el valor almacenado en esa variable.
$ cat sample.sh #!/bin/bash LIST="/var/opt/bin/" ls -l $LIST
Ejecute la secuencia de comandos anterior, que enumerará /var/opt/bin en formato largo, como se muestra a continuación.
$ ./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
Alcance variable de Bash:local y global
En Bash, las variables no tienen que ser declaradas. Pero, cuando acceda a la variable que no se usa hasta ahora, no recibirá ningún mensaje de advertencia o error. En su lugar, mostrará un valor en blanco.
Ejemplo 2. Valores en blanco en variables 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
Como se muestra arriba, inicialmente la variable tendrá un valor en blanco, después de asignarla, puede obtener sus valores. El comando de exportación se usa para exportar variables desde un shell interactivo. export muestra el efecto en el alcance de las variables.
Ejemplo 3. Variables Bash sin exportar
Asigne una variable con un valor en un shell interactivo e intente acceder al mismo en su script de shell.
$ VAR2=LINUX $ cat var2.sh #!/bin/bash echo "VAR2=$VAR2" VAR2=UNIX echo "VAR2=$VAR2"
Ahora, ejecute el script anterior como se muestra a continuación.
$ ./var2.sh VAR2= VAR2=UNIX
Aún así obtendrá un valor en blanco para la variable VAR2. El shell almacena la variable VAR2 con LINUX solo en el shell actual. Durante la ejecución de var2.sh, genera el shell y ejecuta el script. Entonces, la variable VAR2 no tendrá el valor en el shell generado. Debe exportar la variable para que la herede otro programa, incluido un script de shell, como se muestra a continuación.
Ejemplo 4. Exportación de una variable Bash
$ export VAR2=LINUX $ cat var2.sh #!/bin/bash echo "VAR2=$VAR2" VAR2=UNIX echo "VAR2=$VAR2"
Ahora ejecute el script anterior.
$ ./var2.sh VAR2=LINUX VAR2=UNIX $ $echo $VAR2 LINUX
Ahora, puede notar que después de la ejecución del script de shell var2.sh, el valor de VAR2 es LINUX. Porque las variables no se devolverán a su shell interactivo, a menos que ejecute el script en el shell actual.
Declaración de una variable Bash
Usando la declaración de declaración en bash, podemos limitar el valor asignado a las variables. Restringe las propiedades de las variables. La opción en una declaración de declaración se usa para determinar el tipo de una variable.
Sintaxis:
declare option variablename
- declare es una palabra clave
- opción podría ser:
- -r variable de solo lectura
- -i variable entera
- -una variable de matriz
- -f para funciones
- -x declara y exporta a comandos posteriores a través del entorno.
Ejemplo 5. Declaración de variable Bash usando declare
$ 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.
De la siguiente ejecución, puede notar el mensaje de error cuando asigna datos no válidos a una variable.
$ ./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
Variables globales de Bash
Las variables globales también se denominan variables de entorno, que estarán disponibles para todos los shells. El comando printenv se usa para mostrar todas las variables de entorno.
$ printenv SHELL=/bin/bash HISTSIZE=1000 SSH_TTY=/dev/pts/1 HOME=/root LOGNAME=root CVS_RSH=ssh
Variables Bash locales
Las variables locales son visibles solo dentro del bloque de código. local es una palabra clave que se utiliza para declarar las variables locales. En una función, una variable local tiene significado solo dentro de ese bloque de funciones.
Ejemplo 6. Variables Bash Globales y Locales
$ 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
Ejecute el script anterior,
$ 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
En el resultado anterior, las variables locales solo tendrán un valor vacío antes y después de llamar a la función. Su alcance es solo dentro de la función. Desapareció de la función, mientras que la variable global tiene el valor actualizado incluso después de la ejecución de la función.