Comando expr y calc : Resuelve expresiones matemáticas en la terminal

Soy de los que siempre están programando scripts bash para resolver situaciones del día a día (crackear el password del AP/Router, automatizar procesos, etc).

En determinadas ocasiones me he visto en la necesidad de asignarle el valor de alguna expresión matemática a una variable, o simplemente trabajar con expresiones matemáticas, ahí me encuentro con el problema de que bash y las expresiones matemáticas, los cálculos no son muy amigos. Sucede que bash no es como python, que podemos decir variable = 1+5/6 (por ejemplo), en Bash deberemos usar el comando expr o calc

Comando expr

O sea, el comando expr nos sirve para resolver expresiones matemáticas en la terminal, con él podemos calcular lo que necesitemos. Por ejemplo, si queremos que nos aparezca el resultado de 1 + 2 * 8 / 3 ponemos en la terminal:

expr 1 + 2 \* 8 / 3

Noten que antes del asterisco * pongo el backslash -» \ … es necesario, pues expr no interpreta el asterisco como símbolo de multiplicación a no ser que se le ponga el \

Y en pantalla nos aparecerá el resultado. Aquí les dejo un screenshot con algunos ejemplos:

Como pueden apreciar en los cálculos finales (14/4 y 13/4), 14 dividido entre 4 en realidad es 3.5 y 13 dividido entre 4 en realidad es 3.25, entonces ¿cómo es posible que nos muestre 3 en ambos casos? Lo que sucede es que el comando expr no nos muestra los decimales, o sea, lo que sigue después de la coma , no lo muestra, solo nos muestra el entero.

En caso de que queramos asignarle a una variable el resultado de una expresión matemática (Ej: 10/2), sería así:

variable=`expr 10 / 2`

Luego lo comprobamos con:

echo $variable

Es importante que exista un espacio entre cada caracter, o sea, un espacio entre cada número, cada símbolo de suma, resta, multiplicación o división

Comando calc

Este a diferencia del anterior sí es exacto en cuanto a los decimales, ejemplo:

calc 15 / 4

Nos mostraría: 3.75

Aquí les dejo un screenshot con varios ejemplos:

A diferencia de expr, cuando usamos calc es mejor que NO exista un espacio entre cada caracter, o sea, que no hayan espacios entre números y símbolos, justo como ven en la imagen anterior. Así como tampoco necesitan anteponer un \ antes del *

Bueno, esto es básicamente lo que quería comentarles.

No obstante, aún hay algunos otros tips interesantes de cada comando (especialmente de calc), les recomiendo que sea lean el manual:

man calc

man expr

Saludos

Comparte para difundir

Si te ha gustado nuestro contenido ahora puedes ayudar a difundirlo en las redes sociales de manera sencilla usando los siguientes botones:

Envía
Pinea
Print

11 comentarios

  1.   elav dijo

    Muy útil, aunque definitivamente no sería bueno usar Bash para cálculos matemáticos, los decimales cuentan 😀

    1.    Wada dijo

      Sr. elav aun tenemos bash calculator 🙂 podemos utilizar el argumento -l para que utilice la libreria standard math
      algo así

      $ echo "(4/8)+(6/9)" | bc -l
      1.166666666666666666666666

      ha

      1.    elav dijo

        😀

      2.    eliotime3000 dijo

        Excelente. Así ne evito la molestia de instalar el XCalc a la hora de usar el X11 puro.

      3.    KZKG^Gaara dijo

        Oh no conocía este, genial!!

  2.   clow_eriol dijo

    Gracias, es bastante útil 😉

    1.    KZKG^Gaara dijo

      Gracias ^_^

  3.   Noctuido dijo

    Gracias. A la calculadora del sistema le ha salido competidor para operaciones básicas.

    1.    KZKG^Gaara dijo

      Gracias a ti por leernos 🙂

  4.   Joaquin dijo

    Buen tip!

  5.   pedro lala dijo

    no me gusto

Deja un comentario

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

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.