Unix shell 脚本中的浮点数学并将其分配给变量

Unix shell 脚本中的浮点数学并将其分配给变量

我一直在做这样的整数计算。

a=12
b=23
c=$((a-b))
echo $c

但是,现在对于浮点数来说它失败了,我读到我们可以使用 bc 来做到这一点,但是我想在最后将结果分配给变量。

a=12.7
b=23.33
c=$((a-b)) | bc
echo $c

答案1

c=$( printf '%s - %s\n' "$a" "$b" | bc )

或者,对于懒人来说,

c=$( echo "$a - $b" | bc )

或者,对于懒惰的bash用户,

c=$( bc <<<"$a - $b" )

您的代码的问题是

c=$((a-b)) | bc

行不通的。您只能(有用地)对产生输出的内容进行管道传输,并且1) 如果或是浮点数(有语法错误),则c=$((a-b))分配将失败,并且 2) 不产生输出。此外,(nothing) 的输出不会被分配,因为它根本不是分配的一部分。$a$bbcc

相关内容