Befehl expr und calc: Lösen Sie mathematische Ausdrücke im Terminal

Ich bin einer von denen, die immer Skripte programmieren bash alltägliche Situationen zu lösen (Knacken Sie das AP / Router-Passwort, automatisieren Sie Prozesse usw.).

In bestimmten Fällen habe ich die Notwendigkeit gesehen, einer Variablen den Wert eines mathematischen Ausdrucks zuzuweisen oder einfach mit mathematischen Ausdrücken zu arbeiten. Dort habe ich das Problem, dass Bash- und mathematische Ausdrücke, Berechnungen nicht sehr freundlich sind. Es kommt vor, dass Bash nicht wie Python ist, was können wir sagen Variable = 1 + 5/6 (zum Beispiel), in Bash müssen wir den Befehl verwenden ausdr o Ermittlung

Ausdrucksbefehl

Mit anderen Worten, der Befehl expr hilft uns, mathematische Ausdrücke im Terminal zu lösen, mit denen wir berechnen können, was wir brauchen. Wenn beispielsweise das Ergebnis von 1 + 2 * 8/3 angezeigt werden soll, geben wir Folgendes ein:

expr 1 + 2 \* 8 / 3

Beachten Sie, dass vor dem Sternchen * der Backslash - »\ ... eingefügt werden muss, da expr das Sternchen nur dann als Multiplikationssymbol interpretiert, wenn das \

Das Ergebnis wird auf dem Bildschirm angezeigt. Hier ist ein Screenshot mit einigen Beispielen:

screenhot_expr1

Wie Sie in den endgültigen Berechnungen (14/4 und 13/4) sehen können, ist 14 geteilt durch 4 tatsächlich 3.5 und 13 geteilt durch 4 ist tatsächlich 3.25. Wie ist es also möglich, dass es uns in beiden Fällen 3 zeigt? Was passiert ist, dass der expr-Befehl uns nicht die Dezimalstellen anzeigt, das heißt, was nach dem Komma folgt, es zeigt es nicht an, es zeigt uns nur die ganze Zahl.

Wenn wir einer Variablen das Ergebnis eines mathematischen Ausdrucks zuweisen möchten (Beispiel: 10/2), wäre dies folgendermaßen:

variable=`expr 10 / 2`

Dann überprüfen wir es mit:

echo $variable

Es ist wichtig, dass zwischen jedem Zeichen ein Leerzeichen steht, dh zwischen jeder Zahl, jeder Addition, Subtraktion, Multiplikation oder jedem Divisionssymbol ein Leerzeichen

Calc-Befehl

Dieser ist im Gegensatz zum vorherigen in Bezug auf Dezimalstellen genau, Beispiel:

calc 15 / 4

Es würde uns zeigen: 3.75

Hier ist ein Screenshot mit mehreren Beispielen:

screenhot_calc

Im Gegensatz zu expr ist es bei der Verwendung von calc besser, dass zwischen den einzelnen Zeichen KEIN Leerzeichen steht, dh, dass zwischen Zahlen und Symbolen keine Leerzeichen stehen, wie Sie im vorherigen Bild sehen. Sie müssen auch kein \ vor dem * voranstellen

Nun, das ist im Grunde das, worüber ich dir erzählen wollte.

Es gibt jedoch noch einige andere interessante Tipps für jeden Befehl (insbesondere calc). Ich empfehle Ihnen, das Handbuch zu lesen:

man calc

man expr

Grüße


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   lebhaft sagte

    Sehr nützlich, obwohl es definitiv nicht gut wäre, Bash für mathematische Berechnungen zu verwenden, zählen Dezimalstellen :)

    1.    Wada sagte

      Herr Elav, wir haben noch einen Bash-Rechner. Wir können das Argument -l verwenden, um die Standard-Mathematikbibliothek zu verwenden
      so ähnlich

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

      ha

      1.    lebhaft sagte

        :)

      2.    eliotime3000 sagte

        Ausgezeichnet. Auf diese Weise vermeide ich die mühsame Installation von XCalc bei Verwendung von reinem X11.

      3.    KZKG ^ Gaara sagte

        Oh, ich wusste das nicht, großartig !!

  2.   clow_eriol sagte

    Danke, es ist sehr nützlich 😉

    1.    KZKG ^ Gaara sagte

      Danke ^ _ ^

  3.   Noctuid sagte

    Vielen Dank. Der Systemrechner war ein Konkurrent für Grundoperationen.

    1.    KZKG ^ Gaara sagte

      Vielen Dank, dass Sie uns gelesen haben 🙂

  4.   Joaquin sagte

    Guter Tipp!

  5.   Pedro lala sagte

    Ich habe nicht gerne