bash命令行算术echo $((x-y))如何用z划分结果?

时间:2015-01-23 19:18:18

标签: bash math

我试图找出一种方法来获取基本方程的结果并除以另一个整数。所以以简单的形式看起来像; A-B = C然后将C除以D

我理解方程式的第一部分是echo $((A-B))但是如何将结果除以D?

非常感谢任何反馈!

3 个答案:

答案 0 :(得分:3)

使用shell

这(取自评论)失败,因为括号不平衡:

$ echo $((2147483633-807279114))/5184000))

尝试改为:

$ echo $(( (2147483633-807279114)/5184000 ))
258

以上返回一个整数,因为shell只进行整数运算。

使用bc

如果您需要准确的浮点数,则使用的标准工具是bc

$ echo '(2147483633-807279114)/5184000' | bc -l
258.52710628858024691358

使用python

Python支持整数和浮点运算:

$ python -c 'print (2147483633-807279114)//5184000'
258
$ python -c 'print (2147483633-807279114)/5184000.0'
258.527106289

Python,即使你的需求扩展到复杂的科学计算,它的numpy扩展也是一个很好的工具。

使用awk

awk是一个标准的unix工具,支持浮点数学运算:

$ awk 'BEGIN{print (2147483633-807279114)/5184000;quit}'
258.527

答案 1 :(得分:2)

您可以在$(( ))

中进行计算

如果您想计算(A-B)/C,可以将其放在$(( ))

echo $(( (A-B)/C ))

请注意,结果将被截断为零,因为bash不支持小数。

请务必确保在表达式之前有$((,之后)),并且内部的所有括号都匹配。

答案 2 :(得分:0)

dc <<< "$A $B - $D / p"

注1:p打印最终结果

注2:使用dc,您需要先输入数字然后再操作