我是bash shell脚本的初学者。我使用bc进行浮点型数据计算,但是我得到了以下错误。我试图在线搜索,但无法解决这个问题。我的简化代码和错误如下所示。
aa=1270000000.000000
bb=14000000
cc=-5245200.55453439363590374313
dd=4666666.66666666666666666666
ee=$(echo "$aa-$bb/2-$cc+2.5*$dd" | bc -l)
(standard_in)1:语法错误
奇怪的是,以下代码似乎有效。
aa=1.222
bb=2
cc=3.999
dd=4.222222
ee=$(echo "$aa-$bb/2-$cc+2.5*$dd" | bc -l)
这很奇怪,但我不知道这是怎么发生的。有没有人对此有任何想法?提前谢谢。
答案 0 :(得分:2)
bc's
解析器将相邻的负号视为递减运算符; 3--3
与3 - -3
或3-(-3)
不同。您需要相应地将参数调整为echo
,以容纳以cc
开头的-
值。
ee=$(echo "$aa-$bb/2-($cc)+2.5*$dd" | bc -l)
或
ee=$(echo "$aa - $bb / 2 - $cc + 2.5 * $dd" | bc -l)
答案 1 :(得分:0)
bc需要运营商之间的空间。
aa=1270000000.000000
bb=14000000
cc=-5245200.55453439363590374313
dd=4666666.66666666666666666666
ee=$(echo "$aa - $bb / 2 - $cc + 2.5 * $dd" | bc -l)