Linux之Shell的算術運算

2021-09-07 07:07:27 字數 2865 閱讀 5534

在bash的算術運算中有以下幾種方法:

名稱                語法                    範例

算術擴充套件            $((算術式))              r=$((1+2*3))

使用外部程式expr    expr 算術式              r=`expr 1+2*3`

使用$             $[算術式]                r=$[1+2]

使用內建命令        declare -i 變數=算術式    declare -i r=1+2*3

使用內建命令let     let 算術式                let r=1+2

i++運算後加1,i--運算後減1

++i運算前加1,--i運算前減1

一、算術擴充套件

算術擴充套件的語法是:$((表示式)),如果表示式中有變數,該變數之前最好不要加$這個符號,以免變數不存在造成語法錯誤,例:

unset i

echo $((2+$i))

由於變數i不存在,所以會變成 echo $((2+)),這樣語法就錯誤了。

但如果寫成echo $((2+i)),((2+i))是乙個合法的算術式,就算變數不存在,仍可正確計算。

a=5a=$((++1)) a的值加1後,在賦值給a

a=$((--1)) a的值減1後,在賦值給a

a=$((3+a--))運算後減1

二、使用外部程式expr做算術運算

外部程式expr本來的作用,是在「標準輸出」顯示表示式的值。這個是外部程式,和shell沒有關係,所以移植性非常好,

如果注重跨平台,那麼可以在指令碼本使用expr代替其他算術表示式。

expr 3 + 4  

它會在螢幕上顯示7,注意"+"兩邊有空格。

在使用expr時,要特別"表示式"中是否包含shell的特殊字元,如*、|、<、>、!、&、(、),要使用"\"來轉義。

1、r=`expr 引數1 \|引數2`

|代表"或"之意.如果」引數1「存在、非空、不是0,則傳回」引數1「的值,否則傳回"引數2"的值。

r=`expr 3 \| 0` r的值為3

r=`expr 0 \| 2` r的值為2

2、r=`expr 引數1 \&引數2`

如果"引數1"和"引數2"都存在、非空、不是0,則傳回"引數1"的值,否則傳回0.

r=`expr 3 \& 0` r的值為0

3、比較

算術            是否成立    r的值

r=`expr 1 \< 2`      是        1 

r=`expr 3 \<= 2`     否        0 

r=`expr 2 \= 2`      是        1 

r=`expr 3 \!= 2`     是        1 

r=`expr 3 \>= 2`     是        1 

r=`expr 3 \> 2`      是        1 

4、加

r=`expr 4 + 5` r的值為9

5、減

r=`expr 3 - 5` r的值為-2

6、乘

r=`expr 3 \* 5` r的值為15

7、除

r=`expr 32 / 5` r的值為6(餘數無條件捨去)

8、乘方

expr沒有乘方的功能

9、求餘數

r=`expr 32 % 5` r的值為2

10、計算字串長度

r=`expr length "hello"`  r的值為5

三、用$做算術運算

使用$做算術運算和$(())類似

加:r=$[4+5]    r的值為9

減:r=$[4-5]    r的值為-1

乘:r=$[4*5]    r的值為20

除:r=$[5/2]    r的值為2

餘數:r=$[5%2]  r的值為1

乘方:r=$[2**3] r的值為8

四、使用declare、let做算術運算

declare為bash shell的內建命令。

declare -i i

i=5+4 

echo $i 

因為i事先被定義為整數(算術運算),所以$i的值為9,而不再是字串5+4

當被定義為整數後,便可以進行加、減、乘、除..等操作

五、用let做算術運算

let為bash shell的內建命令。

let i=8+4*5

echo $i 

此時輸出的值為28

let表明後邊的直接說乙個算術式。

也可使用空格符讓表示式可讀性高一點,但這時必須使用引號包括表示式才行。

let "i = i + 5"

本文出自 「生命不息,奮鬥不止!」 部落格,請務必保留此出處

Linux之Shell的算術運算

在bash的算術運算中有以下幾種方法 名稱 語法 範例 算術擴充套件 算術式 r 算術式 r 1 2 3 使用外部程式expr expr 算術式 r expr 1 2 3 使用 算術式 r 1 2 使用內建命令 declare i 變數 算術式 declare i r 1 2 3 使用內建命令let...

Shell入門(六)之算術運算

一 數 算 1 原生bash不支援簡單的數 算,但是可以通過其他命令來實現,例如 awk 和 expr,expr 最常用。2 expr 是一款表示式計算工具,使用它能完成表示式的求值操作。expr n op m 表示式和運算子之間要有空格,例如 1 1 是不對的,必須寫成 1 1,這與我們熟悉的大多...

Shell中的算術運算

當使用let時,變數名之前不能再新增 用法 var1 2 var2 3 let result var1 var2 echo result 除此之外,我們還可以使用 let 來進行自加自減操作 let var 使用let進行自加 let var 使用let進行自減 簡寫let no 6 let no ...