2015-01-13 17 views
1

我有一個bash腳本,我需要計算一個百分比。例如,我會有兩個數字(11和531,可以這麼說),理想情況是計算11/531 * 100〜= 2在沒有bc的bash腳本中劃分數學?

我不需要十進制值,實際上我想截斷,從而舍入到最接近的整數。看起來要做浮點數學運算,我需要向bc或其他實用程序發出調用 - 是否有另一種方法來完成我正在尋找的任務?

我沒有任何反對bc的東西,但是當我在腳本中使用它,並將該腳本配置爲一個nagios插件時,nagios因某些未知原因而拒絕繼續。這是非常奇怪和煩人的,而且在挖掘太多之前,我想知道在這種情況下是否可以完全避免BC。

+2

你可以用'awk'例如:'awk'BEGIN {printf「%.2f \ n」,2/3}' – fedorqui

+0

'let result = 11 * 100/531' – Cyrus

+0

@Cyrus,'let'現在不再需要 - '((result = 11 * 100/531))'是一個bash擴展,'result = $((11 * 100/531))'符合POSIX sh標準。 –

回答

5

使用bash的數學內建。它只是打印整數/整數。所以如果你要放棄/截斷小數位使用類似:

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

沒錯。關鍵是要做乘法*先*。否則,初始分數爲零,然後乘以100,仍然爲零。 –

2

嘗試awk中 - 爲了得到浮點數以及

如:

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