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 09/2017 PERFEKTE FOTOS

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

Samsung VG-KBD1500 - Bluetooth-Tastatur mit Touchpad mit Xubuntu 16.04.2 LTS
Linux- & BSD-UserGroup im Weserbergland, 16.08.2017 19:16, 0 Antworten
Bin grad mit "meinem Latein am Ende" darum hier mal so in den Raum geworfen. Samsung VG-KBD1500 -...
Tails verbindet nicht mit WLan
Georg Vogel, 30.07.2017 15:06, 5 Antworten
Hallo zusammen! Habe mir von Linux Mint aus einen Tails USB-Stick erstellt. Läuft soweit gut,...
Genivi for Raspberry Pi 3
Sebastian Ortmanns, 28.07.2017 10:37, 1 Antworten
I try to build a Genivi Development Platform for Rasberry Pi 3. But I always get the failures bel...
Bash awk Verständnis-Frage
Josef Federl, 22.07.2017 17:46, 2 Antworten
#!/bin/bash # Skriptdateiname = test.sh spaltennummer=10 wert=zehner awk '{ $'$spaltennummer'...
Bash - verschachtelte Variablenersetzung, das geht doch eleganter als meine Lösung?
Josef Federl, 18.07.2017 20:24, 3 Antworten
#!/bin/bash #Ziel des Skriptes wird sein die ID zu extrahieren hier nur als Consolentest: root@...