BASH – Rechnen mit Dezimalzahlen

von

Um mit Integer zu rechnen braucht es in der BASH bzw. in BASH-Scripts keine speziellen Tools.

user@linux: ~$ a=2
user@linux: ~$ b=3
user@linux: ~$ $(($a * $b))
20
user@linux: ~$ $(($a - $b))
-1

Um in der Bash mit Dezimalzahlen rechnen zu können, nutzt man am Besten das Tool „bc“, welches meistens bereits in der genutzten Linuxdistribution vorinstalliert ist.

user@linux: ~$ c=1.23
user@linux: ~$ d=6.54
user@linux: ~$ echo "$c + $d" | bc
7.77
user@linux: ~$ echo "$c * $d" | bc
8.04

Will man in einem Script rechnen und die Anzahl Nachkommastellen fix festlegen sieht der Befehl so aus wie unten. Es werden nochmals die vorhin verwendeten Variablen $c und $d verwendet.

#!/bin/bash

c=1.23
d=6.54

x=$(echo "scale=10; $c + $d" | bc)
y=$(echo "scale=10; $c * $d" | bc)

echo $x
echo $y

Die Ausgabe beim Ausführen des Scripts sieht dann so aus:
7.77
8.0442

Obwohl scale=10 gesetzt wurde, wird nur die benötigte Anzahl Stellen ausgegeben, die es braucht und nicht mit Nullen aufgefüllt auf 10 Nachkommastellen.