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:
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!