Лучшее решение с плавающей точкой для сценария Bash?

912
P K

Я использую bash calculator для вычислений с плавающей запятой, и я должен использовать перенаправление ввода и символ backtick (`) в скриптах.

Так как обычные скобки $[math operation]и expr не поддерживают вычисления с плавающей точкой. Есть ли другой способ сделать вычисление с плавающей запятой напрямую, вместо использования bc в скрипте. Мне не нравится ненужное перенаправление ввода и символ backtick (`) для скриптов.

#!/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 ответ на вопрос

1
evnu

Bash не поддерживает арифметику с плавающей запятой, поэтому вы застряли с использованием bc для этого. Вы можете использовать самописные вспомогательные функции, аналогичные тем float_eval, что делает использование bc в качестве встроенного калькулятора немного проще.

Если вам не нужно использовать bash, вы можете также рассмотреть возможность использования zsh, который поддерживает операции с плавающей запятой. Пример:

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 

Похожие вопросы