1. 程式人生 > >Linux中的數學計算

Linux中的數學計算

第一次使用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指令碼程式設計大全》