Как суммировать переменные с плавающей запятой в bash?

Я пытаюсь запустить скрипт, в котором переменная каждый раз обновляется числом с плавающей запятой, «данным как пользовательский ввод» в цикле while. Я знаю, что bash не поддерживает числа с плавающей запятой, я пытался использовать | bc, но мне кажется, что это не работает...

step_l0=0.25
step_l=0
while [ $step_l -le 2 ] do
  step_r=$radius_input
  while [ $step_r -le $radius_define ] do

    stuff done in the while loops

    step_r=$(( $step_r + $step_r0 ))
  done
  step_l=$(( $step_l + $step_l0 ))
done

person Gianmarco Broilo    schedule 02.12.2019    source источник
comment
Используйте язык, который поддерживает арифметику с плавающей запятой.   -  person chepner    schedule 02.12.2019
comment
Этот шов работает, но затем в моих циклах while он говорит, что ожидается целочисленное выражение, я пытаюсь иметь все на bash   -  person Gianmarco Broilo    schedule 02.12.2019
comment
bash НЕ поддерживает операции с плавающей запятой. Вместо этого вы можете попробовать ksh или zsh.   -  person accdias    schedule 02.12.2019


Ответы (1)


По предложению chepner -

$: a=0.25
$: b=1.753
$: awk "BEGIN{ print $a + $b }"
2.003
$: python -c "print $a + $b"
2.003
$: perl -e "print $a + $b"$'\n'
2.003

Там, где это возможно (и это практически всегда возможно), если вам нужно вызвать более точный или мощный язык для выполнения задачи в вашем сценарии, рассмотрите возможность преобразования всего сценария. Вы будете рады, что сделали.

person Paul Hodges    schedule 02.12.2019