Aus EasyLinux 04/2017

Shell-Taschenrechner „bc“ und Bash-Rechenfunktionen

© Djayo, sxc.hu

Rechnen in der Shell

Wer regelmäßig mit der Shell arbeitet, muss für kleinere Berechnungen kein grafisches Tool wie KCalc starten: Mit „bc“ steht ein leistungsfähiger Rechner fürs Terminal zur Verfügung, und einfache Rechnungen sind auch direkt in der Shell möglich.

Kleine Rechenaufgaben fallen häufig an: Dann gilt es z. B., schnell einige Euro-Beträge zu addieren oder durch Bruchrechnung einen prozentualen Anteil zu bestimmen. Die einfachen Grundrechenarten (Addition +, Subtraktion –, Multiplikation * und Division /) sind direkt in der Shell verfügbar, allerdings nur für Ganzzahlen (ohne Nachkommastellen). Das geht über den Shell-Operator $((...)): Der zu berechnende Ausdruck kommt in doppelte runde Klammern, und am Anfang steht ein Dollar-Zeichen (wie beim Zugriff auf Variablen).

bash$ echo $((3+4))
7
bash$ echo $((42*24))
1008
bash$ echo $((17/3))
5

An der Beispieldivision erkennen Sie, dass die Shell Nachkommastellen weg lässt: Bei der „Division mit Rest“ von 17 durch 3 ist das Ergebnis 5, es bleibt ein Rest von 2 (denn 3*5+2=7). Den Rest der Division können Sie mit dem „Modulo“-Operator % ausgeben:

bash$ echo $((17%3))
2

Wollen Sie in komplexeren Ausdrücken Klammern setzen, ist auch das möglich – dadurch entstehen eventuell leicht unübersichtliche Befehle. Im folgenden Aufruf stehen am Anfang drei öffnende Klammern: Die ersten beiden gehören zum Shell-Operator $((...)), die dritte Klammer öffnet die Summe (3+4):

bash$ echo $(((3+4)*2))
14

Wenn Sie Zahlen bereits in Variablen gespeichert haben, können Sie auch direkt im Rechenausdruck darauf zugreifen, ohne den Variablennamen ein weiteres Dollar-Zeichen voranzustellen:

bash$ x=5
bash$ y=10
bash$ echo $((x+2*y))
25

Das klappt auch mit bereits vorhandenen Shell-Variablen, etwa COLUMNS und LINES, welche die Abmessungen des Terminalfensters enthalten – die Anzahl der im Fenster darstellbaren Zeichen erhalten Sie dann über das Produkt:

bash$ echo $COLUMNS $LINES
112 45
bash$ echo $((COLUMNS*LINES))
5040

Variablen ändern

Um einer Variablen einen berechneten Wert zuzuweisen, gehen Sie genau wie bei der sonstigen Arbeit mit Variablen vor – Befehle beginnen mit dem Variablennamen, dann folgt ein Gleichheitszeichen, und dahinter setzen Sie den Rechenausdruck. Der darf auch die zu setzende Variable enthalten: Für die Berechnung arbeitet die Shell dann mit dem bisherigen Wert, und nach dem Kommando enthält die Variable den neuen Wert. Zum Verdoppeln einer Variable x können Sie also das Kommando x=$((2*x)) verwenden:

bash$ echo $x
6
bash$ x=$((2*x))
bash$ echo $x
12

Lassen Sie das führende Dollar-Zeichen weg, können Sie direkt Zuweisungsbefehle (mit Berechnungen) in die Doppelklammern setzen, etwa in der Form

bash$ ((x=x+3))
bash$ echo $x
15

Für häufig benötigte Operationen, die eine Variable verändern und bei der Berechnung den ursprünglichen Wert mit nutzen, gibt es Abkürzungen:

  • ((x+=y)) – addiert y zur Variable x,
  • ((x-=y)) – substrahiert y von der Variablen x,
  • ((x*=y)) – multipliziert y mit der Variablen x,
  • ((x/=y)) – dividiert x durch y,
  • ((x++)) – erhöht den Wert von x um 1 („Inkrement“),
  • ((x--)) – verringert den Wert von x um 1 („Dekrement“).

All diesen Befehlen ist gemein, dass x nach dem Ausführen den neu berechneten Wert enthält. Wer eine Programmiersprache beherrscht, kennt diese Zuweisungsbefehle (dort dann ohne die doppelten runden Klammern).

Zahlen dürfen auch negativ sein (und erhalten dann wie üblich ein führendes Minuszeichen), aber wer mit Nachkommastellen arbeiten will, muss auf ein externes Tool zurückgreifen.

Der Taschenrechner „bc“

Für komplexere Rechenaufgaben bietet sich das Programm bc (engl.: basic calculator, deutsch: einfacher Rechner) [1] an, das auf allen Linux-Distributionen vorinstalliert ist. bc bietet einen interaktiven Modus, in dem Sie Rechenbefehle eingeben (und den Sie mit [Strg]+[D] wieder verlassen können), lässt sich aber auch programmieren: Dazu schreiben Sie kleine bc-Skripte, die dann (ähnlich wie Shell-Skripte) vom Rechner abgearbeitet werden. Die Features von bc gehen dann auch weit über ein Rechenprogramm hinaus: Mit Variablen, Funktionen und Fallunterscheidungen steht eine kleine Skriptsprache zur Verfügung – halt mit dem Fokus auf Rechenaufgaben. Der Namensbestandteil „basic“ (einfach) ist jedenfalls irreführend.

Auf die Scripting-Möglichkeiten werden wir hier nicht weiter eingehen, sondern nur die elementaren Features vorstellen, die bc bereits zu einem Ersatz für grafische Taschenrechner wie KCalc (KDE) [3] oder Calculator (Gnome) [4] machen.

bc gibt nach dem Start einige Zeilen Text aus, in denen es über Version und Copyright informiert; mit der Option -q können Sie diese Ausgabe unterdrücken, wenn sie stört. Einen Prompt zeigt das Programm nicht an, wartet aber trotzdem in einer leeren Zeile auf die Eingabe eines mathematischen Ausdrucks (oder eines Befehls). Wollen Sie mit Floating-Point-Zahlen rechnen (also Nachkommastellen sehen), verwenden Sie die Option -l.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
KAUFEN
EasyLinux 04/2017 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: