Cálculos en shell scripts: Bash a nuestro servicio

En nuestro post anterior aprendimos a realizar operaciones matemáticas desde la línea de comandos en Bash. En resumen, el uso de $(( )) o del comando let hace posible esta tarea. Sin embargo, en esta ocasión explicaremos cómo incluir cálculos en shell scripts para aprovechar esta característica. El resultado esperado es que podamos realizar operaciones matemáticas de manera fácil, y que además nuestros scripts sean fáciles de leer y mantener a futuro.

Cálculos en shell scripts

El siguiente ejemplo ilustra cómo calcular un promedio de una serie de números enteros cuyo resultado sea también un entero. Esta es una limitación de las herramientas nativas de Bash. En el próximo post mostraremos cómo utilizar otra herramienta para realizar cálculos con números decimales.

Nuestro script recibirá el nombre de promedio.sh y deberá aceptar un número aleatorio de argumentos como entrada. En base a los mismos deberá realizar las operaciones necesarias y devolver el resultado por pantalla junto con un mensaje. En el próximo post lo modificaremos para aceptar números decimales tanto en la entrada como en el resultado.

#!/bin/bash

# Cantidad de números pasados como argumentos
CANT_ARGUMENTOS=$#

# Array compuesto por los argumentos
ARGUMENTOS=("$@")
for i in "${ARGUMENTOS[@]}"
do
    # Sumamos todos los argumentos
    let SUMA+=$i
done

# Calculamos el promedio
let PROMEDIO=$SUMA/$CANT_ARGUMENTOS

# Y el resto de la división
let RESTO=$SUMA%$CANT_ARGUMENTOS

#Mostramos el mensaje por pantalla
echo "El promedio de los números ingresados es $PROMEDIO. La división arrojó un resto igual a $RESTO."

Antes de poder ejecutar el script recordemos que debemos darle permisos de ejecución como explicamos con anterioridad. Un simple chmod +x promedio.sh será suficiente.

Ejecutar el script

Para ejecutar el script luego de haberle otorgado los permisos necesarios, lo llamaremos de la siguiente manera. En este ejemplo estamos calculando el promedio de la suma de 100 + 153 + 238, tal como vemos en la Fig. 1:

Cálculos en shell scripts: promedio y resto
Figura 1 – Cálculos en shell scripts: promedio y resto

Espero que este post les haya resultado útil. En el próximo modificaremos nuestro script para aceptar números decimales como entrada. ¡No se lo pierdan!