Linux中的數學計算
阿新 • • 發佈:2018-11-11
第一次使用Shell中的數學運算的時候,相對於C/C++中的直接使用來說,十分的麻煩,並且不是很好記憶
expr方法
expr方法可以直接在命令列使用,當遇到在Shell中有其他含義的操作符的時候,需要使用'\'轉義符,如:
注意:運演算法兩邊一定要有空格
$ expr 1 + 5
6
$ expr 5 \* 5
25
如果expr方法使用在指令碼中時:
val=$(expr 1 + 1)
需要注意的是:expr不支援浮點數運算,所以運算的數字中不能出現浮點數,否則會出現下面的錯誤
方括號方法
如果使用數學運算,可以使用方括號將數學表示式圍起來$[ operation ]或者$(( operator ))
同樣方括號同樣支援在命令列中直接執行,如:
在指令碼中使用方法:
val=$[1 + 1]
與expr相同,方法不支援浮點數運算,使用將會出現以下錯誤:
與expr方法不同:方括號中運算子兩兩邊不需要新增空格 shell中存在的運算子不需要使用轉義符
bc方法
如果版本中沒有bc,則使用yum install bc安裝bc
最重要的不同是:bc支援浮點型運算,浮點運算是由內建的scale控制的,預設scale變數為0,所以預設計算結果不包含小數,我們可以手工指定小數點的個數即可
在命令列中使用:
或者使用管道符:
指令碼中使用,我們需要使用管道符,將要運算的數值作為bc的引數
val=$(echo "scale=4:3.14/2|bc")
總合
參考書籍
《Linus命令列與Shell指令碼程式設計大全》