【发布时间】:2011-02-19 12:40:09
【问题描述】:
在我现在编写的脚本中,我需要一些十进制计算,所以我决定使用bc。我不熟悉这个工具,如果问题是微不足道的,请原谅我。
当我使用控制台并输入:
set r_m=`echo "scale=6; $pd_f*$d_f*(1/sqrt(3))+($fr_numb-1)*($pd_f*$d_f*(1/sqrt(3)) +$pd_f*$d_f*0.5*(s(3.14159265*30/180)/c(3.14159265*30/180)))+0.4"|bc -l`
然后echo "$r_m" 它给了我:
19.849870
($pd_f 和 $d_f 之前分别声明了 1.129 和 1.126,哦和 $fr_numb=18)
but(!) 在 bash 脚本中使用相同的行:
r_m=`echo "scale=6; $pd_f*$d_f*(1/sqrt(3))+($fr_numb-1)*($pd_f*$d_f*(1/sqrt(3))+ $pd_f*$d_f*0.5*(s(3.14159265*30/180)/c(3.14159265*30/180)))+0.4"|bc -l`
给我:
.033022
为什么?
更新
我将= 之后的所有内容都用反引号括起来。我之前不知道如何在 blockquote 中使用它们。
外壳是 bash 2.05
【问题讨论】:
-
什么 shell 使用你的 console?如果我输入您的示例,它会给我
(standard_in) 1: syntax error(四次)。那么,变量$pd_f、$d_f、$fr_numb具有哪些值? -
@Paŭlo Ebermann:我已经更新了这个问题。它现在不应该给你语法错误。正如我所说,这些变量是较早设置的,并且是简单的数字。