Cálculos en Bash: operaciones matemáticas desde la línea de comandos

A diferencia de las posteriores, la versión original de Bash no permitía realizar ningún tipo de operaciones matemáticas. El uso extendido de esta shell hizo necesario que finalmente se incluyera esta funcionalidad. Por eso, en este post mostraremos algunos ejemplos sobre cómo realizar cálculos en Bash. El principal uso que le daremos a esta característica luego será la inclusión en shell scripts.

Antes de que se pudieran realizar operaciones matemáticas en Bash, la shell csh era la única que incluía esta posibilidad utilizando sintaxis parecida a C.

Cálculos en Bash

Para realizar cálculos en Bash, utilizaremos una de las siguientes opciones. En la Fig. 1 veremos todos los resultados de los cálculos que aparecen a continuación:

1.- Encerrar la operación matemática dentro de $(( )).

Por ejemplo:

x=$((3*4))
echo $x
y=$((12*9+3))
echo $y

2.- Utilizar la herramienta let

Este comando es interno a shell, como también observamos en la Fig. 1. Veamos un ejemplo más:

let a=4*9+5
echo $a

En ambos casos podemos emplear el resultado anterior y operar sobre el mismo:

z=$((x+y))
echo $z
let b=a-33
echo $b

Si bien hay otras maneras de realizar cálculos en Bash, las que hemos presentado en este post son las más sencillas de utilizar.

Cálculos en Bash
Figura 1 – Cálculos en Bash

Similar a algunos lenguajes de programación de alto nivel, podemos recurrir a la siguiente simplificación:

let b+=5

para indicar que deseamos añadir un incremento a un valor ya existente (el contenido de b, en este caso). De la misma manera,

let b*=2

multiplicará el valor anterior de b y colocará el resultado en la misma variable. También es posible efectuar divisiones

let b/=4

o calcular el resto de una división (por tres en este caso):

let b%=3

Espero que este post les haya resultado de utilidad. En el próximo utilizaremos lo aprendido en shell scripts para realizar cálculos. ¡Nos leemos en breve!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *