Noticia 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


g-EXiY2qTaM


Continúar leyendo...