Comando expr i calc: Resol expressions matemàtiques a la terminal

Sóc dels que sempre estan programant scripts colpejar per resoldre situacions del dia a dia (crackejar el password d'el AP / Router, automatitzar processos, etc).

En determinades ocasions m'he vist en la necessitat de assignar-li el valor d'alguna expressió matemàtica a una variable, o simplement treballar amb expressions matemàtiques, aquí em trobo amb el problema que bash i les expressions matemàtiques, els càlculs no són molt amics. Passa que bash no és com python, que podem dir variable = 1 + 5/6 (Per exemple), en Bash haurem d'usar la comanda expressar o calcular

comando expr

O sigui, la comanda expr ens serveix per resoldre expressions matemàtiques a la terminal, amb ell podem calcular el que necessitem. Per exemple, si volem que ens aparegui el resultat de 1 + 2 * 8/3 posem a la terminal:

expr 1 + 2 \* 8 / 3

Noten que abans de l'asterisc * poso el backslash - »\ ... cal, doncs expr no interpreta l'asterisc com a símbol de multiplicació tret que se li posi el \

I en pantalla ens apareixerà el resultat. Aquí els deixo un screenshot amb alguns exemples:

screenshot_expr1

Com poden apreciar en els càlculs finals (14/4 i 13/4), 14 dividit entre 4 en realitat és 3.5 i 13 dividit entre 4 en realitat és 3.25, llavors com és possible que ens mostri març en els dos casos? El que passa és que la comanda expr no ens mostra els decimals, és a dir, el que segueix després de la coma, no ho mostra, només ens mostra el sencer.

En cas que vulguem assignar-li a una variable el resultat d'una expressió matemàtica (Ex: 10/2), seria així:

variable=`expr 10 / 2`

Després ho vam comprovar amb:

echo $variable

És important que hi hagi un espai entre cada caràcter, és a dir, un espai entre cada número, cada símbol de suma, resta, multiplicació o divisió

comando calc

Aquest a diferència de l'anterior sí que és exacte pel que fa als decimals, exemple:

calc 15 / 4

Ens mostraria: 3.75

Aquí els deixo un screenshot amb diversos exemples:

screenshot_calc

A diferència d'expr, quan fem servir calc és millor que NO hi hagi un espai entre cada caràcter, és a dir, que no hagin espais entre nombres i símbols, just com veuen en la imatge anterior. Així com tampoc necessiten anteposar un \ abans de l'*

Bé, això és bàsicament el que volia comentar-.

No obstant això, encara hi ha alguns altres tips interessants de cada comanda (especialment de calc), els recomano que sigui llegeixin el manual:

man calc

man expr

Salutacions


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   ILAV va dir

    Molt útil, encara que definitivament no seria bo fer servir Bash per a càlculs matemàtics, els decimals compten 😀

    1.    Wada va dir

      Sr. ILAV encara tenim bash calculator 🙂 podem utilitzar l'argument -l perquè utilitzi la llibreria estàndard math
      alguna cosa així

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

      ha

      1.    ILAV va dir

        ????

      2.    eliotime3000 va dir

        Excel·lent. Així ne evito la molèstia d'instal·lar el XCalc a l'hora d'usar el X11 pur.

      3.    KZKG ^ Gaara va dir

        Oh no coneixia aquest, genial !!

  2.   clow_eriol va dir

    Gràcies, és força útil 😉

    1.    KZKG ^ Gaara va dir

      Gràcies ^ _ ^

  3.   noctúid va dir

    Gràcies. A la calculadora de el sistema li ha sortit competidor per a operacions bàsiques.

    1.    KZKG ^ Gaara va dir

      Gràcies a tu per llegir-nos 🙂

  4.   Joaquin va dir

    Bon tip!

  5.   pedro lala va dir

    no em gust