Las variables en el shell de Linux

Cuando trabajamos con el shell de linux (el bash) podemos definir variables como las de cualquier lenguaje de programación. Para ello pondremos le nombre de la variable seguido de un signo igual (=) y el texto que queramos asignar. Es importante no dejar espacios en blanco, y si el texto lo tiene lo pondremos entre comillas. Ejemplos (jpons@shell-sisop:~$ es el prompt que escribe el shell de mi servidor Linux):

jpons@shell-sisop:~$ A=texto
jpons@shell-sisop:~$ A = texto
-bash: A: orden no encontrada
jpons@shell-sisop:~$ B=texto largo
-bash: largo: orden no encontrada
jpons@shell-sisop:~$ B="texto largo"

Podemos ver que si dejamos espacios en blanco obtenemos errores.

Una vez hemos definido su valor, podemos acceder al contenido poniendo el símbolo del dolar ($) seguido del nombre de la variable. El shell sustituye literalmente $nombre por su valor antes de procesar la línea. La única excepción a esta regla es que $nombre esté encerrado entre comillas simples. Ejemplos:

jpons@shell-sisop:~$ echo $A
texto
jpons@shell-sisop:~$ echo $B
texto largo
jpons@shell-sisop:~$ echo "$A $B"
texto texto largo
jpons@shell-sisop:~$ echo "$A$B"
textotexto largo
jpons@shell-sisop:~$ echo '$A$B'
$A$B

Antes de ejecutar la orden echo, el shell sustituye las variables por sus valores, es algo similar a una función buscar y remplazar de nuestro editor de texto, esto nos permite concatenar textos con valores de variables, pero si el texto debe ir inmediatamente después de nuestra variable debemos usar una sintaxis alternativa (con llaves) para evitar ambigüedades. Ejemplos:

jpons@shell-sisop:~$ echo pre$A
pretexto
jpons@shell-sisop:~$ echo $As

jpons@shell-sisop:~$ echo ${A}s
textos

Al poner $As el shell muestra el valor de una variable denominada «As» que no hemos definido previamente y por tanto el resultado es una tira nula. Con la sintaxis ${A}s que claro que queremos la variable A junto a la letra s.

Por último para terminar este pequeño artículo sobre variables, introduciremos la orden export que indica que queremos que nuestra variable pase a ser una variable de entorno. Una variable de entorno es aquella que se transmite a todos los programas que ejecuta el shell, por tanto si queremos que un programa pueda acceder a nuestra variable debemos «exportarla».

Como ejemplo vamos a escribir con un editor un archivo que llamaremos verAyB.sh (por ejemplo con la orden nano verAyB.sh) con el siguiente texto:

echo A vale $A y B vale $B

Después probaremos nuestro programa y las siguientes órdenes:

jpons@shell-sisop:~$ chmod +x verAyB.sh
jpons@shell-sisop:~$ ./verAyB.sh
A vale y B vale
jpons@shell-sisop:~$ export A
jpons@shell-sisop:~$ ./verAyB.sh
A vale texto y B vale
jpons@shell-sisop:~$ export B
jpons@shell-sisop:~$ ./verAyB.sh
A vale texto y B vale texto largo

Vemos que hasta que no hemos exportado las variables no dan ningún valor desde dentro del programa.

Podemos ver la lista completa de variables de entorno con la orden env.

Podéis ampliar información sobre las variables en la página de manual del bash (orden man bash)

Bienvenidos a la comunidad de JoseanE.com

JoseanE.com es una web que ofrece muchos servicios gratuitos relacionados con Internet.

A través de esta red social queremos conectar a todos los usuarios de JoseanE.com para establecer una comunidad que nos permita ayudarnos mutuamente y nos sirva de trampolín para dar a conocer nuestros blogs, nuestras webs y compartir nuestras experiencias.

Todos sois bienvenidos siempre que respetéis unas normas básicas de respeto.

En estos momentos estamos en fase BETA por lo que aunque intentaremos mantener la información lo más estable posible no os podemos garantizar que todos los datos se vayan a mantener.

La red social de webmasters y usuarios de JoseanE.com

Ir a la barra de herramientas