我的 Linux shell 脚本有问题 ( sh
)。
我正在尝试编写一个计算组合的脚本,但我认为在尝试计算功能时会出现溢出。所以,我正在尝试另一种技术。在这个技术中我使用了这个:
a=`expr $var1 \* $var2 / $var3`
这会产生错误,显然我不能这样做:
a=`expr ($var1 \* $var2) / $var3`
因为这也会产生错误。
我该怎么做?
答案1
您可以用于dc
任意精度结果:
precision=4 var1=3 var2=4 var3=5
a=`echo "$precision k $var1 $var2 * $var3 /p" | dc`
自 1977 年左右以来,它应该适用于几乎所有 Unix 变体。如果你知道你有 gnu dc 可用,那就更简洁了
a=`dc -e "$precision k $var1 $var2 * $var3 /p"`
可以使用。
答案2
对于带有括号的示例,您也必须转义它们:(expr \( $var1 + $var2 \) / $var3
并且不要省略空格,否则expr
会抱怨)。
您bash
还可以使用内置算术扩展,如下所示:echo $(( ($var1+$var2)/$var3 ))
对于中缀计算,有bc
(而dc
用于反向抛光表示法)。