Beste Floating-Point-Lösung für Bash-Skript?

1325
P K

Ich verwende den Bash-Rechner für Fließkommaberechnungen und muss in Skripten das Eingabe-Umleitungs- und Backtick-Symbol (`) verwenden.

Wie normale Klammern $[math operation]und expr unterstützt Float-Berechnung nicht. Gibt es eine andere Möglichkeit, die Floatberechnung direkt auszuführen, anstatt bc im Skript zu verwenden. Ich mag keine unnötige Eingabe-Umleitung und das Backtick-Symbol (`) für Skripte.

#!/bin/bash x=5 y=6 z=3.3 result=`bc <<end scale=3 temp_divide=($x / $y) temp_divide * $z end` echo "final result is $result" 
0

1 Antwort auf die Frage

1
evnu

Bash unterstützt keine Fließkomma-Arithmetik, daher müssen Sie bc dafür verwenden. Sie könnten selbstgeschriebene Hilfsfunktionen ähnlich verwenden float_eval, was die Verwendung von bc als Inline-Rechner ein bisschen einfacher macht.

Wenn Sie nicht bash verwenden müssen, können Sie auch zsh in Betracht ziehen, das Fließkommaoperationen unterstützt. Beispiel:

evnu@centraldogma ~  % ((val = 1.0)) evnu@centraldogma ~  % ((val = 2.2)) evnu@centraldogma ~  % echo $val 2.2000000000 evnu@centraldogma ~  % ((val += 2.2)) evnu@centraldogma ~  % echo $val 4.4000000000