Aus LinuxUser 04/2017

Mit Spigot auf der Kommandozeile rechnen

© Slawomir Chomik, 123RF

Scharf kalkuliert

Der Rechner Spigot zeichnet sich durch hohe Genauigkeit aus. Mit diesem Tool erzielen Sie in der Shell höchst präzise Resultate.

Während der Befehl bc für viele eine bekannte Größe darstellt, mangelt es dem Konkurrenten Spigot noch an Bekanntheit. Nach kurzem Studium des Handbuchs und dem Abarbeiten einiger Beispiele arbeitet es sich mit dem Tool jedoch sehr unkompliziert. Seinen Namen borgt das Programm bei dem bekannten Algorithmus zum Berechnen mathematischer Konstanten. Allerdings gibt es noch andere, ebenso benannte Programme – hier droht Verwechslungsgefahr. Die Software stammt aus der Feder von Simon Tatham [1].

Laden Sie das aktuelle Quellpaket [2] herunter, entpacken Sie es, und wechseln Sie ins dabei angelegte Verzeichnis. Mit ./configure erstellen Sie das für das Kompilieren wichtige Makefile. Treten dabei Fehler auf, installieren Sie die als fehlend angemerkten Ressourcen mit dem Paketmanagement nach. Anschließend erstellen Sie das lauffähige Programm durch die Eingabe von make. Mit den notwendigen Rechten (als Benutzer root oder mit dem Befehl su) verschieben Sie Programm und Komponenten ins Zielverzeichnis, indem Sie make install in das Terminal eingeben.

Um die Installation zu testen, geben Sie im Terminal spigot 1+2 ein. Wenn Sie hier das korrekte Ergebnis erhalten, hat die Installation funktioniert. Online [3] finden Sie ein Handbuch, das Sie in die Arbeit mit der Software einführt.

Allgemeines

Eine Spezialität des Tools besteht in der mehr oder weniger unendlichen Darstellungstiefe von Zahlen. Geben Sie probehalber spigot pi am Terminal ein: Die Ausgabe der Kreiszahl läuft und läuft, bis Sie [Strg]+[C] drücken.

Um negative Eingabewerte von Optionen und Befehlen zu unterscheiden, bringen Sie Ihre Rechenaufgabe in Hochkommas und Klammern unter (Abbildung 1). Bei positiven Zahlen können Sie sich das schenken. Spätestens aber bei umfangreicheren Aktionen sollten Sie stets die Aufgabe in Hochkommas setzen, schon um die Shell nicht zu verwirren. Für den Einsatz von Variablen gilt: Wegen der Shell müssen Sie sogar die Klammern entwerten.

Abbildung 1: Bei der Eingabe gilt es, die korrekte Schreibweise von positiven und negativen Zahlen zu beachten.
Abbildung 1: Bei der Eingabe gilt es, die korrekte Schreibweise von positiven und negativen Zahlen zu beachten.

Für die tägliche Arbeit gilt es, die Stellen von Ergebnissen zu begrenzen und zu runden. Im ersten Schritt legen Sie die Genauigkeit mit -dStellen an. Das schneidet die Werte ab, rundet sie aber nicht. Die Art des Rundens bestimmt ein eigener Parameter. Die wichtigsten Optionen von Spigot fasst die Tabelle „Wichtige Parameter“ zusammen, Abbildung 2 zeigt einige Beispiele.

Abbildung 2: Das Runden von Zahlen gehört zu den Standardoperationen von Spigot.
Abbildung 2: Das Runden von Zahlen gehört zu den Standardoperationen von Spigot.

Parameter

Hinweis

-dZahl

Stellenzahl begrenzen, kein Runden

--rn

Auf- und Abrunden

--ri

Runden, stets von null weg

--rz

Runden, stets Richtung null

--ru

Aufrunden, zum Positiven

--rd

Abrunden, zum Negativen

% oder mod

Rest (Modulo)

^, **

Potenzen

'let Variable=Wert'

Variable definieren

--printf

Zahlen formatieren

-b Basis

Zahlensysteme umrechnen

Um die Ausgabe in ein bestimmtes Format zu bringen, setzen Sie ans Ende der Eingabe die passende Printf-Anweisung. Mit man printf erfahren Sie mehr über die Operatoren. Die mathematischen Funktionen von Spigot, wie etwa Wurzel (sqrt), entsprechen den bekannten Schlüsselwörtern diverser Programmiersprachen. Es gilt Punkt vor Strich.

Genau wie Bc funktioniert auch Spigot nicht in einer Pipe. Vielmehr teilen Sie dem Programm mit, auf welchem Eingabekanal und mit welcher Basis es einen Wert entgegennimmt. Das Konstrukt für die Rechenanweisung lautet folgendermaßen:

baseBasisfd:Dateideskriptor

Um den Wert stattdessen aus einer Datei auszulesen, verwenden Sie die folgende Anweisung:

baseBasisfile:Dateiname

Beim Einsatz in einem Skript maskieren Sie Variablen durch doppelte Anführungszeichen, wenn Sie diese an den entsprechenden Stellen des Konstrukts verwenden.

Arbeiten mit Variablen

Listing 1 zeigt, wie Sie Variablen in eine Spigot-Anweisung einbinden. Beim Testen kommen auch negative Zahlen zum Einsatz. Die einzelnen Optionen runden (--rn), kappen bei 50 Nachkommastellen (-d50) und formatieren die Ausgabe (--printf, 8 Stellen, 2 Nachkommastellen, Fließkommazahl).

Listing 1

#! /bin/bash
echo "Rechnen mit Spigot und Variablen"
read -p " Erste Zahl: " a
read -p "Zweite Zahl: " b
echo "Ergebnisse ohne Formatierung"
echo "----------------------------"
spigot --rn -d50 \("$a"*"$b"\)
spigot --rn -d50 \("$a"/"$b"\)
echo "Ergebnisse mit Formatierung"
echo "----------------------------"
spigot --rn -d50 \("$a"*"$b"\) --printf %8.2f
spigot --rn -d50 \("$a"/"$b"\) --printf %8.2f
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
KAUFEN
LinuxUser 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: