Shellskripte aus der Stümper-Liga – Folge 24: (Ver-)Rechnen mit der Bash
Bash Bashing
Bernhard Bablok
Die Macher der Bash spendierten der Shell Rechenkenntnisse auf Vierte-Klasse-Niveau. Wer mehr als die Grundrechenarten benötigt, weicht auf bc aus. Dass die Ergebnisse rechnender Bash-Skripte trotz der simplen Möglichkeiten jedes Mal stimmen, ist gleichwohl nicht gesagt.
Als Mathe-Schülerin ist die Bash nur Mittelmaß. Zum Glück steht das Fach selten auf dem Stundenplan: Im Alltag brauchen Programmierer meist nur Zählvariablen, sie wandeln Returncodes um oder berechnen hin und wieder Blockgrößen. Für diese Aufgaben ist die Bash mächtig genug. Das Listing 1 zeigt fünf Möglichkeiten, zwei Zahlen zu addieren. Alle Varianten führen normalerweise zum gleichen Ergebnis. Soweit die gute Nachricht.
Aber die Bash wäre nicht die Bash, wenn nicht irgendwelche mehr oder minder seltenen Ausnahmefälle zu Syntaxfehlern führen würden. Wer mag, kann vor dem Weiterlesen Listing 1 selbst auf Fallstricke untersuchen.
Die Zeile 6 spielt eine Sonderrolle. Diese Syntaxvariante funktioniert zwar noch, ist aber nicht mehr dokumentiert. Jeder Bash-Programmierer sollte sie aus seinem Repertoire streichen. Die Zeile 5 verwendet ein externes Programm. Wer auf portable Skripte Wert legt, sollte diese Variante wählen – selbst Systeme mit extrem funktionsbeschnittenen Shells verfügen typischerweise über das »expr«
-Kommando.
[...]
Das Linux-Magazin Online veröffentlicht erstmals alle Print-Artikel,
die in den vergangenen sechs Jahren im Linux-Magazin erschienen sind.
Damit steht Ihnen ein hochwertig bestücktes Archiv bis hin zu den Beiträgen
der aktuellen Ausgabe online zur Verfügung. Die über 1200 Artikel sind
größtenteils kostenlos zugänglich, nur für Beiträge (als PDF) der
jüngsten zehn Linux-Magazine ist eine Gebühr von jeweils 99 Cent fällig.
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.