在本小節中,我們將學習如何在Bash中使用算術運算符。
根據希望通過腳本獲得的結果類型,我們有時可能需要應用算術運算符。像變數一樣,它們也很容易應用。在bash腳本中,可以對數值執行算術運算以獲得所需的結果。
Bash Shell支持11種算術運算符。
下表展示了每種算術運算符的語法,描述和示例:
運算符 | 描述 | 示例 |
---|---|---|
+ |
加法,數字(運算元)的加法 | $(( 10 + 3 )) ,結果為:13 |
- |
減法,從第一個到第二個運算元的減法 | $(( 10 - 3 )) ,結果為:7 |
* |
乘法,運算元的乘法。 | $(( 10 * 3 )) ,結果為:30 |
/ |
除法,第一個運算元除以第二個運算元並返回商。 | $(( 10 / 3 )) ,結果為:3 |
** |
求冪,第一運算元的第二運算元的冪值。 | $(( 10 ** 3 )) ,結果為:1000 |
% |
模,測量第一個運算元除以第二個運算元時的餘數。 | $(( 10 % 3 )) ,結果為:1 |
+= |
通過常量遞增變數,用於按提供的常量遞增第一個運算元的值。 | x=10;let "x += 3";echo $x; 結果為:13 |
-= |
通過常量遞減變數,用於按提供的常量遞減第一個運算元的值。 | x=10;let "x -= 3";echo $x; 結果為:7 |
*= |
將變數乘以常數,用於將第一個運算元的值乘以提供的常數。 | x=10;let "x *= 3";echo $x; 結果為:30 |
/= |
將變數除以常數,用於計算(變數/常數)的值並將結果存儲回變數。 | x=10;let "x /= 3";echo $x; 結果為:3 |
%= |
變數除以常數的餘數,用於計算(變數%常數)的值並將結果存儲回變數。 | x=10;let "x %= 3";echo $x; 結果為:1 |
1. Bash執行算術運算
在bash shell上有許多選項可以執行算術運算。下麵提供了一些我們可以用來執行算術運算的選項:
1.1. 雙括弧
雙括弧是在Bash shell中執行基本算術運算的最簡單機制,可以使用帶或不帶前導$
的雙括弧來使用此方法。
語法
((expression))
可以採用四種不同的方法來實現所需的目標。參考下麵給出的方法,以瞭解如何使用雙括弧機制(假設想將數字10
和3
相加):
方法1
Sum=$((10+3))
echo "Sum = $Sum"
方法2
((Sum=10+3))
echo "Sum = $Sum"
方法3
Num1=10
Num2=3
((Sum=Num1+Num2))
echo "Sum = $Sum"
方法4
Num1=10
Num2=3
Sum=$((Num1+Num2))
echo "Sum = $Sum"
所有這些方法將輸出相同的結果:
Sum = 13
下麵的示例演示如何在Bash shell腳本中對運算符使用雙括弧:
Bash腳本檔:arithmetic-operator.sh
#!/bin/bash
x=6
y=10
echo "x=6, y=10"
echo "Addition of x & y"
echo $(( $x + $y ))
echo "Subtraction of x & y"
echo $(( $x - $y ))
echo "Multiplication of x & y"
echo $(( $x * $y ))
echo "Division of x by y"
echo $(( $x / $y ))
echo "Exponentiation of x,y"
echo $(( $x ** $y ))
echo "Modular Division of x,y"
echo $(( $x % $y ))
echo "Incrementing x by 5, then x= "
(( x += 5 ))
echo $x
echo "Decrementing x by 5, then x= "
(( x -= 5 ))
echo $x
echo "Multiply of x by 5, then x="
(( x *= 5 ))
echo $x
echo "Dividing x by 5, x= "
(( x /= 5 ))
echo $x
echo "Remainder of Dividing x by 5, x="
(( x %= 5 ))
echo $x
執行上面示例代碼,得到以下結果:
1.2. Let構建
let
是Bash的內置命令,它能夠執行算術運算。它遵循以下基本語法格式:
let <arithmetic expression>
下麵給出一個示例,說明如何在Bash腳本中使用let
命令。將下麵代碼保存到檔:let-operator.sh
#!/bin/bash
x=10
y=6
z=0
echo "Addition"
let "z = $(( x + y ))"
echo "z= $z"
echo "Substraction"
let "z = $((x - y ))"
echo "z= $z"
echo "Multiplication"
let "z = $(( x * y ))"
echo "z = $z"
echo "Division"
let "z = $(( x / y ))"
echo "z = $z"
echo "Exponentiation"
let "z = $(( x ** y ))"
echo "z = $z"
echo "Modular Division"
let "z = $(( x % y ))"
echo "z = $z"
let "x += 5"
echo "Incrementing x by 5, then x= "
echo $x
let "x -= 5"
echo "Decrementing x by 5, then x= "
echo $x
let "x *=5"
echo "Multiply of x by 5, then x="
echo $x
let "x /= 5"
echo "Dividing x by 5, x= "
echo $x
let "x %= 5"
echo "Remainder of Dividing x by 5, x="
echo $x
執行上面示例代碼,得到以下結果:
1.3. 反引號
在bash腳本中,還可以使用反引號和expr(稱為通用運算式求值器)執行算術擴展。
`expr`
類似於let
,但是不會將結果保存到變數中,它直接列印結果。與let
不同,不需要將運算式用引號引起來。需要在運算式的專案之間使用空格。重要的是要注意,我們應該在命令替換中使用
`expr`
將輸出保存到變數中。也可以不使用“反引號”而使用
`expr`
```。
**語法**
```bash
`expr item1 operator item2`
#或者
expr item1 operator item2
下麵給出一個示例,說明如何在Bash腳本中使用反引號和expr
:
Bash腳本程式檔:backticks.sh,完整代碼如下:
#!/bin/bash
#Basic arithmetic using expr
echo "a=10, b=20"
echo "c is the value of addition c=a+b"
a=10
b=20
echo "c= `expr $a + $b`"
執行上面示例代碼,得到以下結果:
上一篇:
Bash休眠(sleep命令)
下一篇:
Bash If語句