AA_123rf-39625267_SlawomirChomik-123RF.jpg

© Slawomir Chomik, 123RF

Mit Spigot auf der Kommandozeile rechnen

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.

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.

Wichtige Parameter

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

Abbildung 3 zeigt den Ablauf. Sie müssen dazu das Skript entweder in der Form bash Skript aufrufen oder mit entsprechenden Rechten zum Ausführen versehen.

Abbildung 3: Ein kleines Shell-Skript demonstriert einige Funktionen von Spigot, unter anderem den Einsatz von Shell-Variablen als Teil der Anweisung.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Ohne Crash durch die Bash
    Mit der Bourne-Again-Shell schreiben Linux-Anwender Skripte, die nervige und stupide Aufgaben automatisieren – etwa um auf dem Notebook Strom einzusparen.
  • Mehr Komfort
    Von einfachen Abfragen bis hin zu komplexen Menüs: Mit dem Toolkit Dialog bauen Sie eine grafische Oberfläche für Shell-Skripte, die oft nicht mehr als eine zusätzliche Zeile brauchen.
  • Kleine nützliche Dinge für die Shell
  • Kreislauf
    Schleifen ermöglichen das mehrmalige Abarbeiten von Anweisungen. Dabei kann das begrenzende Ereignis sowohl außerhalb als auch innerhalb der Schleife liegen.
  • Verschlungene Pfade
    Mit Schleifen, Fallunterscheidungen und Funktionen programmieren Sie komplexe Skripte auf einfache und elegante Weise.
Kommentare

Infos zur Publikation

LU 04/2017: SPEZIAL-DISTRIBUTIONEN

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

WLAN lässt sich nicht einrichten
Werner Hahn, 21.03.2017 14:16, 0 Antworten
Dell Latitude E6510, Ubuntu 16.4, Kabelbox von Telecolumbus. Nach Anklicken des Doppelpfeiles (o...
"Mit Gwenview importieren" funktioniert seit openSuse 42.2 nicht mehr
Wimpy *, 20.03.2017 13:34, 2 Antworten
Bisher konnte ich von Digitalkamera oder SD-Karte oder USB-Stick Fotos mit Gwenview importieren....
Ich habe eine awk Aufgabe und bekomme es nicht so Recht hin
Dennis Hamacher, 10.03.2017 18:27, 1 Antworten
Ich hoffe Ihr könnt mir dabei helfen oder mir zeigen wie der Befehl richtig geschrieben wird. Ich...
Unter Linux Open Suse Leap 42.1 einen Windows Boot/ ISO USB Stick erstellen...
Tim Koetsier, 07.03.2017 15:26, 1 Antworten
Hallo, weiß jemand wie ich oben genanntes Vorhaben in die Tat umsetzen kann ? Wäre echt dankba...
Druckertreiber installieren OpenSuse42.1
Tim Koetsier, 07.03.2017 15:22, 1 Antworten
hallo, kann mir BITTE jemand helfen ich verzweifel so langsam. Habe einen Super Toner von Canon...