Operadores en Bash

operadores en bash

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.

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!


Posted

in

, ,

by