Cómo utilizar variables en Bash

Cualquier lenguaje de programación viene con su propio conjunto de variables. Son una parte esencial de cualquier sistema y se necesitan para ejecutar incluso los programas más simples.

Con las variables los usuarios pueden almacenar cualquier información, como números o fechas, así como cadenas, respuestas a preguntas, caracteres alfanuméricos, su información, o incluso elementos array.

Bash no es la excepción y también viene con variables. Es una shell Unix que lee comandos de shell y los utiliza para interactuar con tu computadora física o un servidor privado virtual (VPS)

Este tutorial cubrirá todos los diferentes tipos de variables en bash y proporcionará algunos ejemplos prácticos de cómo puedes usarlos.  

¿Qué son exactamente las variables en Bash y cómo funcionan?

Una variable bash actúa como almacenamiento temporal para una cadena o un número. Las variables Bash son importantes cuando se trata de scripting en Bash. También facilitan a los usuarios escribir funciones complejas y realizar diversas operaciones.  

Los usuarios pueden crear variables dándoles un nombre y un valor. Un nombre puede ser cualquier cosa. Sin embargo, no puede empezar con un número y no puede contener espacios, solo guiones bajos si es necesario.

En cuanto al valor, puede ser cualquier cadena de texto o número. Se recomienda mantener el nombre de la variable similar a su valor, ya que es más fácil de recordar y diferenciar entre otras variables. 

Estas son algunas otras advertencias de sintaxis que vale la pena mencionar:

  • Aunque no es posible poner números al inicio de las variables, los usuarios pueden hacer que la primera o cualquier letra en un nombre de variable sea mayúscula. 
  • Las variables de Bash distinguen entre mayúsculas y minúsculas, lo que significa que mivariable y MiVariable se considerarán diferentes. 
  • Cuando un usuario necesita referirse a una variable, la debe «imprimir». En otras palabras, necesitas agregar un símbolo de $ antes de su nombre. De esta manera, bash sabrá que el usuario quiere utilizar el valor de una variable.
  • Siempre que un usuario necesite crear una variable o modificar su valor, no es necesario el símbolo $, solo el nombre real. 
  • Normalmente, la manipulación de variables se usa en scripts de bash, bucles y arrays. Sin embargo, es posible especificar y utilizar variables sin scripts, solo hay que declararlo en la línea de comandos.

Tipos de variables Bash

Bash viene en dos tipos de variables: definidas por el sistema y definidas por el usuario. Analicemos en mayor detalle:

  • Variables definidas por el sistema: como sugiere el nombre, bash ya viene con un conjunto de variables, que también se pueden llamar variables de entorno. Todas pueden ser utilizadas por todos los scripts de bash ya que están definidas por el sistema:
VariableEjemploFunción
SHELL/bin/bashDefine el nombre de la interfaz utilizada
PWD/rootMuestra el directorio de trabajo actual
LOGNAMErootDefine el nombre del usuario registrado
MOTD_SHOWNpamDefine el mensaje del día para el sistema
HOMErootDirectorio principal del usuario
LS_COLORSrs=0:di=01;34:ln=01;36:mh=00:pi=40;Se usa para establecer los colores en los que se mostrarán los nombres de archivos para el usuario
SSH_CONNECTION185.185.185.185 54321 185.185.185.186 12Información de conexión SSH [IP del usuario] [puerto del usuario] [IP de la máquina Linux] [puerto de la máquina Linux] 
LESSCLOSE/usr/bin/lesspipe %s %sUsado para llamar al postprocesador de entrada
TERMxterm-256colorDefine el tipo de terminal
LESSOPEN/usr/bin/lesspipe %sUtilizado para llamar al posprocesador de entrada
USERrootNombre del usuario actual
SHLVL1Muestra el número de niveles de shell en los que se está ejecutando el shell actual
SSH_CLIENT185.185.185.185 54321 12Información del cliente SSH [IP del usuario] [puerto del usuario] [puerto de la máquina Linux]
PATH/usr/local/sbinDefine los directorios que se deben buscar para que bash encuentre un comando
SSH_TTY/dev/pts/0_=/usr/bin/printenvMuestra la ruta al dispositivo asociadocon la consola actual o comando

Los usuarios siempre pueden verificar la lista de variables definidas por el sistema utilizando los comandos env o printenv.

Resultado del comando printenv en la línea de comandos.
  • Variables definidas por el usuario: estas son variables establecidas y modificadas por el usuario. También pueden ser llamadas variables locales y solo son visibles dentro del bloque de código. A diferencia de las variables de entorno, las definidas por el usuario solo funcionan para ese script en particular. 

Trabajando con variables en Bash

Bash permite a los usuarios definir y manipular variables tanto en scripts de bash como en la línea de comandos. Echemos un vistazo rápido a ambos ejemplos:

Línea de comandos

Crearemos una variable miusuario y comprobaremos qué shell está utilizando.

Crear usuario y comprobar shell en Bash.

Script de Bash

Una forma más conveniente de manipular variables es con la ayuda de un script de bash. Crearemos el mismo script en la línea de comandos pero utilizando un script de bash. Empieza creando un archivo con tu editor de texto preferido:

nano miscript.sh

Luego, pega los siguiente:

#!/bin/bash
miusuario="minombre"
echo mi usuario es $miusuario y mi shell es $SHELL

Por último, ejecuta el script:

bash miscript.sh
Ejecución del script de bash que utiliza dos variables y las muestra por pantalla.

Cómo utilizar variables en guiones Bash

Las variables de bash se utilizan habitualmente en la programación de scripts de bash. Los usuarios pueden definir todo tipo de variables y usarlas en scripts automatizados.

Cuando se ejecutan, estos scripts pueden realizar miles de operaciones con un solo clic, lo que los hace especialmente útiles para tareas de automatización o para ahorrar tiempo escribiendo comandos similares manualmente.  

Empecemos con un ejemplo sencillo. Comienza creando un script con tu editor de texto favorito. Vamos a utilizar nano en este caso:

nano script.sh

Luego, pega los siguiente:

#!/bin/bash
mivariable="Me encantan los lenguajes de programación y la declaración de variables"
echo $mivariable

La primera línea define el shell que vamos a utilizar. En nuestro caso, será un shell bash.

Luego, el script creará una nueva variable llamada mivariable. Ten en cuenta que para asignar una nueva variable, necesitarás usar un signo igual (=).

Usaremos el comando echo para imprimir el valor de la variable. También necesitamos usar un signo de dólar ($), para que bash sepa que necesitamos el valor de una variable.

Por último, ejecuta el script utilizando este comando:

bash script.sh
La terminal muestra el resultado de la ejecución del script en el que se invoca a una variable para que muestre su valor.

Como se muestra en el ejemplo anterior, el comando ejecuta todo el script y bash realiza todas las acciones especificadas por el usuario en el sistema.

Cómo trabajar con variables especiales

Bash viene con varios caracteres especiales, también llamados variables especiales. La siguiente tabla te los mostrará todos:

Variable especialExplicación
$@Almacena argumentos como un array
$$Muestra el ID del proceso de la shell actual
$#Muestra el número de argumentos proporcionados en un determinado script
$*Agrupa todos los argumentos dados conectándolos
$!Muestra el ID del último trabajo en segundo plano
$?Muestra el código de estado de salida para el último comando ejecutado
$0Muestra el nombre del archivo del script actual
$_Asigna la variable al último argumento del último comando
$-Muestra las banderas actualmente utilizadas en la shell de bash
$1-${11}Almacena datos de los primeros 11 nombres de argumentos

Vamos a usar algunos de estos caracteres especiales y hacer un script de ejemplo con ellos. Empieza creando un archivo de script:

nano caracteresespeciales.sh

El siguiente código mostrará la funcionalidad de las variables especiales  $0, $*, and $$

#!/bin/bash
#Crear una nueva variable
mivariable="Escribir argumentos de línea de comandos es divertido"
#Conectar variables con comillas dobles
echo "Yo soy" "una variable" "en bash"; $*
#Mostrar el id de proceso del shell actual
echo $$
#Mostrar el nombre de archivo de este script
echo $0
#Imprimir el valor de mivariable
echo $mivariable
La terminal muestra el uso de algunos caracteres especiales en bash.

Primero declaramos una nueva variable, luego usamos el primer parámetro para conectar las cadenas con comillas dobles en una sola. Luego, utilizamos los caracteres especiales restantes para mostrar el ID de la terminal actual y el nombre del archivo de terminal que ejecutamos.  

Cómo crear tus variables en Bash

Cualquier variable que crees aparte de las variables de entorno se considera tuya. En otras palabras, solo funcionará dentro de tu script.

Ten en cuenta que las variables no pueden comenzar con un número ni contener espacios. Sin embargo, se permiten guiones bajos y letras mayúsculas. Vamos a crear un ejemplo de script bash con diferentes tipos de nombres de variables:

nano diferentesvariables.sh

Luego, pega lo siguiente:

#!/bin/bash
nombrevariable="Las variables locales en bash son increíbles"
Nombrevariable="También se admiten valores numéricos 123"
NombreVariable="4 5 6"
Nombre_Variable="Configurar variables es divertido"
Nombre_Var3="Bash también realiza la división de palabras por lo que cualquier espacio será eliminado 1    2   3  4"

echo $nombrevariable
echo $Nombrevariable
echo $NombreVariable
echo $Nombre_Variable
echo $Nombre_Var3
La ejecución del script muestra que los nombres de variables similares son tratados por bash como variables diferentes.

Nuestro ejemplo muestra que incluso si los nombres de las variables son similares, todos se interpretan como variables separadas. 

Cómo trabajar con variables de entorno

Las variables de entorno pueden ser utilizadas por todos los scripts bash en un sistema dado. A diferencia de las variables locales, las variables de entorno se establecen automáticamente por el sistema. Siempre se escriben con letras mayúsculas, lo cual es una de las principales indicaciones de que los usuarios están utilizando variables de entorno. 

Por ejemplo, el siguiente script mostrará cuatro parámetros esenciales que los administradores de sistemas pueden usar al gestionar sistemas: tipo de shell, directorio de trabajo actual del usuario, directorio principal y nombre real del usuario.  

#!/bin/bash
echo "Este usuario está usando el shell $SHELL"
echo "Su directorio de trabajo es: $PWD"
echo "Mientras que su directorio de inicio es: $HOME"
echo "Y el nombre de usuario es: $USER"
El script imprime en pantalla los valores de las variables de entorno para shell, directorio de trabajo, directorio de inicio y nombre de usuario.

Cómo exportar variables en Bash

Exportar variables en bash permite a los usuarios utilizar dichas variables entre diferentes instancias de shell secundarias. Para exportar variables, primero, necesitamos crear una variable de prueba:

hola=mundo

Ahora, si fueras a imprimir esta variable, funcionaría perfectamente:

echo "$hola"
Se declara una variable en la terminal y el comando echo imprime la variable.

Ahora, usa el comando de exportación para exportar la variable hola y cambia a una nueva instancia de shell:

export hola
bash 
echo "$hola"
Caso de uso del comando export en la terminal. Permite a los usuarios utilizar variables definidas localmente dentro de diferentes instancias del shell.

Por ejemplo, si hubieras dejado de lado el comando export, no habría ninguna salida visible.

Salida de la terminal en una nueva instancia de bash cuando no se ha exportado la variable previamente. En este caso el comando echo no da ninguna salida para el usuario.

Cómo citar variables en Bash

Las comillas juegan un papel esencial en la terminal bash. Dependiendo de si usas comillas dobles («) o comillas simples (‘), puede cambiar el resultado.

Por ejemplo, crearemos dos scripts, uno usando comillas dobles y el otro usando comillas simples. Empieza a crear el script de bash pegando el siguiente comando:

nano comillasdobles.sh

Ahora, pega lo siguiente:

#!/bin/bash
comillasdobles="Me gusta escribir argumentos de línea de comandos"
echo "Las comillas dobles funcionan así: $comillasdobles"
La terminal muestra el caso de uso de las comillas dobles. En ese caso, el usuario verá una salida estándar donde bash imprimirá el valor guardado en una variable dada.

Luego, crea otro script de bash:

nano comillassimples.sh

Finalmente, usa el siguiente comando:

#!/bin/bash
comillassimples="Las variables de string son lo mejor"
echo 'Las comillas simples funcionan así: $comillassimples'
La terminal muestra el segundo script que contiene comillas simples. En este caso, bash imprime los nombres originales de las variables en lugar de los valores.

Las comillas dobles muestran el valor real de la variable, como se ve en los ejemplos. En contraste, las comillas simples solo muestran el nombre de la variable. 

Cómo usar el comando de sustitución en Bash

La sustitución de comandos es una forma de ejecutar un comando y utilizar su resultado como un nuevo argumento o parte de otro comando.

Por ejemplo, usemos la sustitución para crear 10 archivos con la ayuda de un comando de secuencia y los caracteres especiales $( ):

touch $(seq 1 10)
La ventana de la terminal muestra el uso de la sustitución de comandos. Crea diez archivos vacíos con la ayuda de los comandos touch y seq.

Los caracteres especiales de sustitución $( ) permiten que se ejecute el comando touch simultáneamente, resultando en un comando que crea 10 archivos vacíos.

Conclusión

Al igual que la mayoría de los lenguajes de programación, bash viene con sus propias variables, clasificadas como locales y variables de entorno. Los usuarios pueden utilizarlas para crear scripts para automatizar tareas o realizar varias otras acciones en la terminal bash. 

En este tutorial cubrimos todos los diferentes tipos de variables y también proporcionamos algunos ejemplos útiles de cómo pueden ser utilizadas en escenarios reales en tu servidor físico o virtual.

Esperamos que la información haya sido útil. Si tienes alguna pregunta o sugerencia, déjala en la sección de comentarios abajo. 

Author
El autor

Luis Jordán

Luis es un profesional del eCommerce y de los creadores de sitios web que ama el marketing digital. Se dedica a ayudar a las empresas a mejorar su presencia online a través de las prácticas del marketing. Cuando no está sentado frente al computador, seguramente está cocinando algún platillo o entrenando.