linux shell 實現 四則運算(整數及浮點) 簡單方法

Augusdi發表於2015-04-26


在剛剛學習寫shell 批處理時候,進行邏輯運算中,少不了需要進行基礎的:四則運算,這裡說說在linux shell 裡面簡單的實現方法。

 

1.簡單方法

[chengmo@centos5 ~]$ b=$((5*5+5-3/2)) 
[chengmo@centos5 ~]$ echo $b
29

 

在linux shell中,我們可以使用 $(()) 將表示式放在括號中,即可達到運算的功能。

 

2.其它方法:

用:expr 實現運算

 

[chengmo@centos5 ~]$ expr 5 - 4
1

 

注意:將需要運算的表示式寫入在expr 後面即可,保證 引數與運算子號中間有空格隔開。

 

類別語法說明
條件判斷expr1 \| expr2如果 expr1 不是零或 null 則傳回 expr1,否則傳回 expr2。
expr1 \& expr2如果 expr1 及 expr2 都不為零或 null,則傳回 expr1,否則傳回 0。
四則運算expr1 + expr2傳回 expr1 加 expr2 後的值。
expr1 - expr2傳回 expr1 減 expr2 後的值。
expr1\* expr2傳回 expr1 乘 expr2 後的值。
expr1 / expr2傳回 expr1 除 expr2 後的值。
expr1 % expr2傳回 expr1 除 expr2 的餘數。
大小判斷expr1 \> expr2如果 expr1 大於 expr2 則傳回 1,否則傳回 0。如果 expr1 及 expr2 都是數字,則是以數字大小判斷,否則是以文字判斷。以下皆同。
expr1 \< expr2如果 expr1 小於 expr2 則傳回 1,否則傳回 0。
expr1 = expr2如果 expr1 等於 expr2 則傳回 1,否則傳回 0。
expr1 != expr2如果 expr1 不等於 expr2 則傳回 1,否則傳回 0。
expr1 \>= expr2如果 expr1 大於或等於 expr2 則傳回 1,否則傳回 0。
expr1 \<= expr2如果 expr1 小於或等於 expr2 則傳回 1,否則傳回 0。
文書處理expr1 : expr2比較一固定字串,即 regular expression。可以使用下列字元來輔助:

. 匹配一個字元。

$ 找字串的結尾。

[list] 找符合 list 中的任何字串。

* 找尋 0 個或一個以上在 * 之前的字。

\( \) 傳回括號中所匹配的字串。

 

 

3.浮點運算:

[chengmo@centos5 ~]$ expr 5.0 - 4
expr: 非法引數

 

[chengmo@centos5 ~]$ echo $((5.0-4))
-bash: 5.0-4: syntax error in expression (error token is ".0-4")

 

從上面運算結果,看來上面表示式,不足以支援浮點運算了。查閱資料才發現:bash 不支援浮點運算,如果需要進行浮點運算,需要藉助bc,awk 處理。

 

方法一:

[chengmo@centos5 ~]$ c=$(echo "5.01-4*2.0"|bc)
[chengmo@centos5 ~]$ echo $c
-2.99

方法二:

[chengmo@centos5 ~]$ c=$(awk 'BEGIN{print 7.01*5-4.01 }')
[chengmo@centos5 ~]$ echo $c
31.04

 

注:在shell 中$() 與 ``等效。 中間包含命令語句執行,返回執行結果。


http://www.cnblogs.com/chengmo/archive/2010/09/30/1839556.html

相關文章