En Bash, los operadores son básicos para realizar cálculos, comparar valores y controlar el flujo de ejecución en los scripts. Aquí cubriremos los principales operadores aritméticos, de comparación, lógicos y de strings.
Contenido
Operadores aritméticos en Bash
Los operadores aritméticos permiten realizar cálculos numéricos como suma, resta, multiplicación y división. Funcionan prácticamente como en cualquier otro lenguaje de programación, incluso como en Excel.
Operadores comunes
+
: Suma-
: Resta*
: Multiplicación/
: División%
: Módulo (resto de la división)
Veamos un ejemplo en donde intervienen todos:
#!/bin/bash
a=10
b=5
# Suma
suma=$((a + b))
echo "Resultado de la suma: $a + $b = $suma"
# Resta
resta=$((a - b))
echo "Resultado de la resta: $a - $b = $resta"
# Multiplicación
multiplicacion=$((a * b))
echo "Resultado de la multiplicación: $a * $b = $multiplicacion"
# División
division=$((a / b))
echo "Resultado de la división: $a / $b = $division"
# Módulo
modulo=$((a % b))
echo "El módulo es: $a % $b = $modulo"
Esto es básico, siempre recordando la declaración, uso y la evaluación entre paréntesis (( ... ))
que vimos en otro post.
Operadores de comparación en Bash
Los operadores de comparación permiten comparar valores enteros (o strings pero ya lo veremos más adelante) para verificar condiciones. Es muy común usarlos para controlar el flujo de un programa con if
, while
, for
, etc.
Operadores comunes
Aquí dejaré una lista de operadores comunes en Bash y su equivalente en otros lenguajes de programación:
-eq
: Igual a (equal). Es lo mismo que==
.-ne
: No igual a (not equal). Es lo mismo que!=
o<>
(en SQL, por ejemplo).-lt
: Menor que (less than). Es como<
.-le
: Menor o igual que (less than or equal). Es igual a<=
.-gt
: Mayor que (greater than). Es como>
.-ge
: Mayor o igual que (greater than or equal). Es igual que>=
.
#!/bin/bash
a=10
b=5
if [ $a -eq $b ]; then
echo "$a es igual a $b"
else
echo "$a no es igual a $b"
fi
if [ $a -gt $b ]; then
echo "$a es mayor que $b"
fi
if [ $b -lt $a ]; then
echo "$b es menor que $a"
fi
Como vemos, luego de usar if
, usamos los corchetes []
para evaluar las expresiones. Es algo así como los paréntesis para evualuar valores numéricos que ya hemos visto. También es importante separar con un espacio la expresión de los corchetes, ya que si no usamos los espacios al inicio y al final nos dará un error.
Operadores lógicos en Bash
Los operadores lógicos sirven para agrupar condiciones y crear validaciones o expresiones más complejas, que por lo general también involucran a los operadores de comparación.
Operadores comunes
&&
: AND lógico (verdadero si ambas condiciones son verdaderas)||
: OR lógico (verdadero si al menos una condición es verdadera)!
: NOT lógico (niega la condición delante)
#!/bin/bash
diez=10
cinco=5
veinte=20
# AND... Y
if [ $diez -gt $cinco ] && [ $veinte -gt $diez ]; then
echo "$diez es mayor que $cinco Y $veinte es mayor que $diez"
fi
# OR... O
if [ $diez -lt $cinco ] || [ $veinte -gt $diez ]; then
echo "Al menos una condición de las dos es verdadera"
fi
# NOT... No
if [ ! $diez -eq $cinco ]; then
echo "$diez no es igual a $cinco"
fi
Operaciones con strings en Bash
Hasta ahora solo vimos operaciones con valores numéricos, sin embargo también podemos hacer operaciones con cadenas de texto en Bash.
Puedes comparar cadenas de texto. Los operadores de comparación de cadenas permiten verificar si dos cadenas son iguales, diferentes, o si una es mayor que otra (ordenado alfabéticamente).
Operadores comunes
==
: Igual a!=
: No igual a<
: Menor que>
: Mayor que
#!/bin/bash
cadena1="Hola"
cadena2="Mundo"
# ¿Las cadenas son iguales?
if [ "$cadena1" == "$cadena2" ]; then
echo "Las cadenas son iguales"
else
echo "Las cadenas son diferentes"
fi
# Comparar si las cadenas son diferentes
if [ "$cadena1" != "$cadena2" ]; then
echo "Las cadenas no son iguales"
fi
# Comparar cadenas en orden alfabético
if [[ "$cadena1" < "$cadena2" ]]; then
echo "\"$cadena1\" es menor que \"$cadena2\""
fi
if [[ "$cadena1" > "$cadena2" ]]; then
echo "\"$cadena1\" es mayor que \"$cadena2\""
fi
Si vemos con cuidado, cuando comparamos strings a nivel alfabético usando los operadores de mayor que (>
) y menor que (<
), no usamos los corchetes simples ([]
), si no los corchetes dobles ([[ ... ]]
).
Aquí dejamos este tema de los operadores en Bash.
¡Gracias por leer!