1. Inicio
  2. Tecnologia
  3. Bash
  4. Operaciones Aritméticas

Operaciones Artiméticas

Las operaciones aritméticas son esenciales a la hora de programar y el desarrollo de script en Bash no es la excepción. La forma preferida de ejecutar operaciones aritméticas en Bash es utilizando la expansión aritmética. La sintaxis es la siguiente:

$((expresión))

Ejemplo:

i=0
((i=i+1))
echo "i = $i"

Salida:

i = 1

En la siguiente tabla se muestran los operadores aritméticos y su funcionalidad:

SintaxisFunción
+, -, *, /Adición, sustracción, multiplicación, división
++x, x++ Pre y post incremento
--x, xx-- Pre y Post decremento
%Módulo (resto)
** (o ^)exponenciación
absValor absoluto
sqrtRaíz cuadrada

Orden de precedencia

Al momento de evaluar una expresión aritmética en Bash, es importante tener en cuenta el orden de precedencia de los operadores artiméticos. Este orden determina el orden en el cual los operadores son evaluados.

El orden de precedencia para los operadores aritméticos básicos es el siguiente:

  1. Multiplicación y división (evaluado de izquierda a derecha)
  2. Suma y resta (evaluado de izquierda a derecha)

Incremento/Decremento

Operadores + y -

La forma más simple de incrementar/decrementar una variable es utilizando los operadores + y -:

i=$((i+1))
((i=i+1))
j=$((j-1))
((j=j-1))

Ejemplos:

i=0
until [ $i -gt 3 ]; do
   echo i: $i
   ((i=i+1))
done

Salida:

i: 0
i: 1
i: 2
i: 3
  
    </div>
    <div class='pageitem'>  

Operadores ++ y --

Estos operandos son utilizados para incrementar/decrementar una variable en 1:

((i++))
((j--))

Los operadores puede ser usados en forma prefija o posfija:

Incremento prefijo: ((++i))
Incremento posfijo: ((i++))
Decremento prefijo: ((--j))
Decremento posfijo: ((j--))

Operadores += y -=

Estos operadores son usados para incrementar/decrementar una variable en un valor específico:

((i+=15))

En el siguiente ejemplo se decrementa el valor de la variable i en 5:

i=20
while [ $i -ge 5 ]; do
    echo Número: $i
    ((i-=5)) 
done

Resultado:

Número: 20
Número: 15
Número: 10
Número: 5

Operaciones en punto flotante

De forma predeterminada, Bash ejecuta las operaciones artiméticas con números enteros. En el siguiente ejemplo se puede observar ese comportamiento :

echo $((50/6))
8

La respuesta correcta deberia ser 8.33

Para el manejo de números en punto flotante (decimales) es necesario recurrir a una herramienta adicional, siendo la más popular bc.

echo "50/6" | bc -l
8.33333333333333333333

bc permite controlar el número de dígitos decimales a mostrar:

echo "scale=3; 50/6" | bc -l
8.333