bash 脚本中没有 bc 的除法数学?

division math in a bash script without bc?

我有一个 bash 脚本,我需要在其中计算百分比。例如,我将有两个数字(可以说是 11 和 531),理想情况是计算 11/531*100 ~= 2

我不需要小数值,事实上我想截断并向下舍入到最接近的整数。似乎要进行浮点数学运算,我需要调用 bc 或其他实用程序——是否有另一种方法来完成我正在寻找的东西?

我对 bc 没有任何异议,但是当我在我的脚本中使用它,并将脚本配置为 nagios 插件时,nagios 出于某种未知原因出现拒绝继续。这非常奇怪和烦人,在深入挖掘之前我想知道在这种情况下我是否可以完全避免 bc。

使用 bash 的数学内置函数。它只是打印出 integers/whole 个数字。所以如果你想 discard/truncate 小数位使用类似的东西:

echo $(((11*100)/531)) # prints 2

试试 Awk - 也可以得到浮点数

例如:

NUM=44; awk -v NUM=$NUM 'BEGIN { print  ((NUM - 20) / 45) }'