Unix/Linux - Shell 算術運算子示例



Bourne Shell 支援以下算術運算子。

假設變數a值為 10,變數b值為 20,則:

運算子 描述 示例
+ (加法) 將運算子兩側的值相加 `expr $a + $b` 結果為 30
- (減法) 從左運算元減去右運算元 `expr $a - $b` 結果為 -10
* (乘法) 將運算子兩側的值相乘 `expr $a \* $b` 結果為 200
/ (除法) 將左運算元除以右運算元 `expr $b / $a` 結果為 2
% (取模) 將左運算元除以右運算元並返回餘數 `expr $b % $a` 結果為 0
= (賦值) 將右運算元的值賦給左運算元 a = $b 將 b 的值賦給 a
== (等於) 比較兩個數字,如果相同則返回 true。 [ $a == $b ] 將返回 false。
!= (不等於) 比較兩個數字,如果不同則返回 true。 [ $a != $b ] 將返回 true。

非常重要的一點是,所有條件表示式都必須放在方括號內,並且方括號周圍要有空格,例如 [ $a == $b ] 是正確的,而 [$a==$b] 是錯誤的。

所有算術計算都使用長整數進行。

示例

這是一個使用所有算術運算子的示例:

#!/bin/sh

a=10
b=20

val=`expr $a + $b`
echo "a + b : $val"

val=`expr $a - $b`
echo "a - b : $val"

val=`expr $a \* $b`
echo "a * b : $val"

val=`expr $b / $a`
echo "b / a : $val"

val=`expr $b % $a`
echo "b % a : $val"

if [ $a == $b ]
then
   echo "a is equal to b"
fi

if [ $a != $b ]
then
   echo "a is not equal to b"
fi

以上指令碼將產生以下結果:

a + b : 30
a - b : -10
a * b : 200
b / a : 2
b % a : 0
a is not equal to b

使用算術運算子時,需要注意以下幾點:

  • 運算子和表示式之間必須有空格。例如,2+2 是錯誤的;應寫成 2 + 2。

  • 整個表示式應包含在‘ ’(單引號)中。

  • 對於乘法運算子 *,應使用跳脫字元 \

  • if...then...fi 語句是決策語句,將在下一章中解釋。

unix-basic-operators.htm
廣告