Variables en Bash

variables en bash

Este es el segundo post sobre “Programación en Bash“. En este abordaremos las variables en Bash, su declaración, uso y algunas situaciones de la sintaxis de Bash que son curiosas pero son obligatorias entender para escribir buen código y saber leerlo.

Las variables son un concepto fundamental en cualquier lenguaje de programación, y Bash no es la excepción. Las variables nos permiten guardar y manipular datos que puedan ser leídos después y hacer operaciones con sus valores.

Declaración de variables en Bash

A diferencia de muchos lenguajes de programación (y al igual que otros), en Bash no es necesario declarar el tipo de una variable. Solo se le asigna un valor y ya será Bash quien determine que hacer con él después. Su sintaxis es:

variable="valor"
# o
variable=valor
  • Sin espacios: es importante no dejar espacios entre el nombre de la variable, el signo = y el valor. Si pones espacios, Bash interpretará la línea como si estuvieras usando un comando, no asignando valores y saltará un error.
nombre=Juan
edad=25
mensaje="Hola, mi nombre es $nombre y tengo ${edad} años"
  • Comillas: si el valor contiene espacios, debes envolverlo entre comillas. Si el valor es alfanumérico, pero no tiene espacios, como lo hemos con con la variable nombre y su valor “Juan”, no es necesario ponerle las comillas, aunque bueno, es una buena práctica ser consistentes.

Leer variables en Bash

Para acceder al valor de una variable en Bash, se usa el signo de dólar ($) seguido del nombre de la variable:

echo $mensaje

Sin embargo, en el ejemplo anterior vimos que la variable mensaje tiene esta parte ${edad}, que es otra forma de leer el valor. Esta forma se usa principalmente para separar algunos valores cuando estás construyendo un comando, por ejemplo:

nombre="reporte"
echo "El reporte $nombre2024.txt"

Aquí ocurrirá un error ya que Bash quiere leer la variable $nombre2024, pero esta no existe, entonces la forma correcta de leer el valor que queremos, que en este caso es reporte2024.txt, será así:

echo "El archivo de ${nombre}2024.txt"

De esta manera la salida será la correcta.

Modificación y Reasignación de Variables en Bash

Como dijimos, Bash no es tipado, así que como en Python o PHP, podemos asignar un valor de tipo string y luego según nuestras necesidades pues le asignaremos un número, ¿por qué no?

archivo="reporte_2024.txt"
echo "El archivo del reporte es: $archivo"
archivo=348
echo "Ahora el INDEX del reporte es $archivo"

Nuestra salida será:

El archivo del reporte es: reporte_2024.txt
Ahora el INDEX del reporte es 348

¡Y sin problemas!

Operaciones en Bash

En Bash, todas las variables se tratan como cadenas, es por eso que podemos asignar el valor de "Juan" a una variable sin usar las comillas. Pero obviamente nosotros necesitaremos hacer operaciones ariméticas.

Veamos un ejemplo sencillo:

a=5
b=3
resultado=$((a + b))
echo "La suma de $a y $b es $resultado"
  • Los operadores son lor normales para suma (+), resta (-), multiplicación (*) y división (/)
  • Para el módulo es %
  • Incremento y decremento son ++ y -- respectivamente

Nota: en la expresión $((a + b)) también puedes usar espacios sin problemas. Así que también funcionaría si usamos $(( a + b )).

Dobles paréntesis en Bash

Usando los dobles paréntesis en Bash (( ... )) le indicamos que lo que está dentro debe ser trata de valores numéricos y esto es válido para operaciones aritméticas o evaluaciones de algún valor en un if, por ejemplo:

a=10
if (( a > 5 )); then
    echo "a es mayor que 5"
fi

Arrays en Bash

Bash también permite el uso de arrays para almacenar múltiples valores en una sola variable. Los arrays se definen de la siguiente manera:

meses=("enero" "febrero" "marzo" "abril")

OJO: no importa si mezclas valores numéricos o alfanuméricos, lo puedes hacer.

Para acceder a los valores, al igual que en otros lenguajes, lo haremos usando el índice:

echo "${meses[2]}"

# también puedes usando una variable
idx=1
echo "${meses[$idx]}"

Si quieres imprimir todos los valores lo haces de la siguiente manera:

echo "${meses[@]}"

También podrías usando un for para recorrer todos los elementos del array, pero eso lo veremos después.

Nota: si usas la expresión echo $meses, solo imprimirá el valor del primer elemento.

¿Y si quiere agregar un elemento? Acá usaremos el operador += para indicarle a la variable que agregaremos un nuevo elemento al final:

# agregar un elemento
meses+=("mayo")

# agregar más de un elemento
meses+=("junio" "julio")
echo "${meses[@]}"

Su salida será:

enero febrero marzo abril mayo junio julio

Ahora quiero borrar un elemento. Para borrar un elemento de un array en Bash usaremos la palabra unset seguido del nombre del array y el index.

unset "meses[0]"
echo "${meses[@]}"

La salida será:

febrero marzo abril mayo junio julio

Para eliminar el array en Bash usaremos:

unset meses

Esto eliminará el array completo. Es como borrar la referencia de la memoria.

Si queremos conservar la referencia, pero borrando todos los elementos haremos lo siguiente:

meses=()

Con estos terminamos la primera parte de las variables en Bash.

¡Gracias por leer!


Posted

in

, ,

by