¿Qué son las variables de Bash y cómo puedes usarlas?

Bash te permite asignar cadenas de texto completas a variables individuales, simplificando su uso y la escritura de scripts. ¿Cómo funcionan y cómo puedes usarlas? Vamos a averiguarlo.
Tabla de Contenidos
- ¿Qué es una variable de Bash?
- Variables en tiempo real
- Variables en scripts
- Variables de Bash permanentes y alias
- Creando arreglos
- Ejecutando variables de subshell
- Manipulación de subcadenas
- Preguntas frecuentes
¿Qué es una variable de Bash?
Las variables son nombres fáciles de recordar que pueden contener diferentes valores alfanuméricos. Son útiles, ya que permiten aplicar la misma función a diferentes valores, sin tener que reescribir un script/pieza de código. También facilitan la escritura del script/pieza de código, ya que en lugar de tratar con valores individuales, puedes usar el mismo nombre para todos ellos.
Variables en tiempo real
Bash permite el uso de variables. Puedes crear variables sobre la marcha y reutilizarlas durante tu sesión actual de Bash. Pueden ayudar en tu uso de Bash de muchas maneras diferentes y desaparecerán después de que termine la sesión actual.
Por ejemplo, supongamos que estás visitando un montón de sitios. Podrías estar investigando o raspando datos y crear la siguiente variable:
sitea=https://www.maketecheasier.com
Después de eso, si quisieras visitar nuestro sitio con Firefox, podrías simplemente escribir:
firefox $sitea
Mucho más fácil – y más legible. La variable $sitea permanecería asignada al sitio hasta que cambiaras su contenido manualmente o la sesión de Bash terminara. Y, por supuesto, puedes crear más variables, como siteb, sitec y sited.
Al configurar nuevas variables, puedes usar cualquier nombre que desees y almacenar cualquier cadena alfanumérica dentro de ellas. Ten en cuenta, sin embargo, que son sensibles a mayúsculas y minúsculas por defecto. Así, $sitea no sería lo mismo que $SiteA. Además, ten en cuenta que debes usar comillas al almacenar cadenas con caracteres especiales dentro de ellas (incluidos los espacios).
Consejo: para aquellos que son nuevos en Bash, comienza con estos comandos básicos de Bash.
Variables en scripts
Las variables en Bash son más útiles al escribir scripts, ya que te permiten escribir un solo script, que luego puede iterar a través de diferentes cadenas o actuar sobre piezas de datos personalizadas. Supongamos que estás escribiendo un script que todos podrían usar en su computadora, pero que cada vez mostraría un saludo personalizado. Sin variables, tendrías que escribir una versión diferente del script para cada usuario. Con variables, mantienes el script igual y solo cambias el nombre del usuario.
Un script así se vería algo como lo siguiente:
#!/bin/bash
username=Ramces
echo$username
El ejemplo anterior puede parecer redundante; sin embargo, a medida que aumenta la complejidad del código, las variables se vuelven indispensables. Un script podría tener cientos o miles de líneas y contener el nombre del usuario en diferentes lugares. Para entenderlo mejor, considera el siguiente script algo diferente:
#!/bin/bash
username=Linus
echo Hola $username. Este es un script simple que escribí que repetirá tu nombre - es decir, $username - a menudo como un ejemplo real de cómo usar variables de Bash. Espero que te ayude a entender cómo usar variables para mejorar tu flujo de trabajo en Bash, $username. En este caso, la variable username está asignada a tu nombre. Cada vez que Bash se encuentra con ella, la reemplaza con $username.
El script anterior utilizará el nombre definido como la variable username para completar el texto. Si usas el nombre real del usuario, tendrías que escribirlo cuatro veces, luego hacer lo mismo para el siguiente usuario, y otras cuatro veces para el siguiente. Una y otra vez. Al asignarlo a una variable, solo tienes que cambiarlo una vez por cada usuario, y cada mención del nombre del usuario en el texto se actualizará.
Bueno saber: además de las variables, también puedes usar el bucle for en Bash.
Variables de Bash permanentes y alias
Vimos cómo puedes establecer variables temporalmente y cómo, para algo más permanente, puedes incluirlas en tus propios scripts. También puedes establecer variables permanentemente en Bash editando el archivo “~/.bashrc”.
- Abre el archivo “~/.bashrc” en tu editor de texto favorito.
nano ~/.bashrc- Te sugerimos que comiences con una prueba, solo agregando una sola variable, para que sepas dónde mirar si el proceso no funciona. Ve al final del archivo y, en una nueva línea, agrega tu variable.
myname="Ramces Red"
- Guarda tu archivo y sal del editor. Los cambios no se aplicarán de inmediato. Ingresa lo siguiente en tu terminal para que surta efecto:
source ~/.bashrc- Utiliza la nueva variable establecida en tu sesión de Bash:
echo$mynamePuedes configurar tantas variables como desees y simplificar enormemente tus aventuras diarias en Bash.
Para un impulso extra en productividad, también vale la pena configurar un tipo diferente de variable: alias. A diferencia de las variables típicas, que están asignadas a datos que puedes usar en comandos, los alias se utilizan en lugar de comandos reales.
Así como puedes usar una variable fácil de recordar para contener cadenas largas de texto, puedes usar alias como alternativas fáciles a comandos complejos. Puedes averiguar más sobre ellos aquí, donde convertimos un comando completo de compresión de 7zip en un alias de dos caracteres.
Por último, incluso si has establecido permanentemente una variable en .bashrc, puedes reasignarle un valor diferente temporalmente, como vimos antes. La variable presentará el nuevo contenido hasta que termine la sesión actual de Bash (después de cerrar sesión o reiniciar) o vuelvas a cargar el archivo .bashrc.
Creando arreglos
Mientras que la mayoría de los usuarios de Bash piensan en variables como un enlace simple entre un dato y una etiqueta, también es posible usarlas como un marcador para arreglos. Estos son un tipo de estructura de datos que puede almacenar múltiples valores en un formato de índice numerado. Para crear un arreglo, sigue los pasos a continuación:
- Crea un script de shell vacío:
nano array.sh- Usa el subcomando
declarepara inicializar el arreglo de Bash en el proceso de shell actual.
declare-a myarray
- Población tu nuevo arreglo usando el operador de asignación incorporado de Bash. Por ejemplo, la siguiente línea de código crea un arreglo con cinco elementos dentro:
myarray=([0]=hello [1]=maketecheasier [2]=its [3]=an [4]=array)
- Prueba si tu nuevo arreglo funciona usando el comando
echopara extraer datos de él:
echo${myarray[1]}
También puedes transmitir el contenido de un arreglo usando el operador “*”:
echo${myarray[*]}
Ejecutando variables de subshell
Una de las características más grandes de Bash es su capacidad para crear subshells, donde los programas pueden ejecutarse como si fueran funciones básicas. Por ejemplo, escribir ls -a en un script de shell y ejecutarlo seguirá imprimiendo el contenido del directorio de trabajo actual.

Aunque esto puede parecer limitante, Bash extiende esto permitiéndote almacenar la salida de estos programas dentro de variables. Esto te permite usarlas como entrada para otros programas dentro de tu script.
- Para usar variables de subshell, primero crea un script de shell vacío:
nano subshell.sh- Escribe el siguiente código base dentro de tu nuevo script de shell:
#!/bin/bash
mysubshell=$(x)
echo"La salida de la variable es $mysubshell"- Reemplaza la “x” con el comando que deseas ejecutar y almacenar la salida. Por ejemplo, lo siguiente obtendrá el contenido del archivo world.txt y reemplazará la palabra “world” con “maketecheasier.”
mysubshell=$(sed s/world/maketecheasier/g world.txt)
- Prueba tu nueva variable de subshell ejecutando tu nuevo script:
chmod u+x ./subshell.sh
bash ./subshell.sh
FYI: además de las variables, estos son los caracteres especiales que deberías conocer en Bash.
Manipulación de subcadenas
Aparte de almacenar y recuperar datos, también puedes modificar el contenido de las variables. Bash tiene un conjunto de operadores que puedes adjuntar al final de cada variable, lo que te permitirá afinar tus scripts sin llamar a ningún programa adicional.
- Crea un script de shell vacío:
nano substring.sh- Escribe el siguiente código base dentro de tu script vacío:
#!/bin/bash
mysubstring=hello.txt.old
echo"Mi nombre de archivo es: ${mysubstring}"- La manipulación básica de subcadenas viene en tres formas. Primero, el carácter “#” acepta un patrón regex que el shell eliminará al principio de la variable:
#!/bin/bash
mysubstring=hello.txt.old
echo"Mi nombre de archivo es: ${mysubstring#*.}"
- Segundo, el carácter “%” también acepta un patrón regex que el shell eliminará al final de la variable:
#!/bin/bash
mysubstring=hello.txt.old
echo"Mi nombre de archivo es: ${mysubstring%.*}"
- Bash también proporciona una forma de modificar selectivamente el contenido de una variable. Similar al programa
sed, puedes usar el carácter “/” para encontrar y reemplazar cualquier cadena dentro de una variable:
#!/bin/bash
mysubstring=hello.txt
echo"Mi nombre de archivo es: ${mysubstring/hello/maketecheasier}"
Bueno saber: las expresiones regulares son una herramienta importante en el kit de herramientas de cada usuario de Linux. Aprende a usarlas de manera efectiva a través de nuestra hoja de trucos fácil de aprender.
Preguntas frecuentes
¿Es posible ejecutar un script de shell dentro de una variable?
Sí, escribiendo la ruta completa del script que deseas ejecutar. Por ejemplo, ejecutar $(/home/ramces/.scripts/sample.sh) creará un subshell de Bash y ejecutará el script “sample.sh” desde mi directorio personal.
¿Puedes eliminar una variable mientras se está ejecutando un script?
Sí. Puedes eliminar una variable de un proceso de shell en ejecución insertando el subcomando unset seguido del nombre de la variable en tu script. Es importante tener en cuenta que ejecutar este comando no eliminará ninguna variable que se ejecute fuera del proceso de shell actual.
¿Puedes usar una variable permanente dentro de un script de shell externo?
Sí. Es posible referirse al valor de una variable que fue declarada fuera del proceso de shell actual. Sin embargo, también debes tener cuidado al usar variables externas, ya que es fácil sobrescribirlas temporalmente.
Crédito de la imagen: Unsplash. Todas las alteraciones y capturas de pantalla por Ramces Red.