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.
Tabla de Contenidos
¿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:
Variable | Ejemplo | Función |
SHELL | /bin/bash | Define el nombre de la interfaz utilizada |
PWD | /root | Muestra el directorio de trabajo actual |
LOGNAME | root | Define el nombre del usuario registrado |
MOTD_SHOWN | pam | Define el mensaje del día para el sistema |
HOME | root | Directorio principal del usuario |
LS_COLORS | rs=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_CONNECTION | 185.185.185.185 54321 185.185.185.186 12 | Informació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 %s | Usado para llamar al postprocesador de entrada |
TERM | xterm-256color | Define el tipo de terminal |
LESSOPEN | /usr/bin/lesspipe %s | Utilizado para llamar al posprocesador de entrada |
USER | root | Nombre del usuario actual |
SHLVL | 1 | Muestra el número de niveles de shell en los que se está ejecutando el shell actual |
SSH_CLIENT | 185.185.185.185 54321 12 | Información del cliente SSH [IP del usuario] [puerto del usuario] [puerto de la máquina Linux] |
PATH | /usr/local/sbin | Define los directorios que se deben buscar para que bash encuentre un comando |
SSH_TTY | /dev/pts/0_=/usr/bin/printenv | Muestra 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.
- 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.
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
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
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 especial | Explicació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 |
$0 | Muestra 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
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
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"
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"
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"
Por ejemplo, si hubieras dejado de lado el comando export, no habría ninguna salida visible.
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"
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'
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)
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.