Unix/Linux - Shell 關係運算符示例



Bourne Shell 支援以下特定於數值的關係運算符。除非這些值是數字,否則這些運算子不適用於字串值。

假設變數a 為 10,變數b 為 20,則 -

運算子 描述 示例
-eq 檢查兩個運算元的值是否相等;如果相等,則條件為真。 [ $a -eq $b ] 為假。
-ne 檢查兩個運算元的值是否相等;如果值不相等,則條件為真。 [ $a -ne $b ] 為真。
-gt 檢查左運算元的值是否大於右運算元的值;如果大於,則條件為真。 [ $a -gt $b ] 為假。
-lt 檢查左運算元的值是否小於右運算元的值;如果小於,則條件為真。 [ $a -lt $b ] 為真。
-ge 檢查左運算元的值是否大於或等於右運算元的值;如果大於或等於,則條件為真。 [ $a -ge $b ] 為假。
-le 檢查左運算元的值是否小於或等於右運算元的值;如果小於或等於,則條件為真。 [ $a -le $b ] 為真。

務必理解所有條件表示式都應放在方括號內,並且方括號周圍要有空格。例如,[ $a <= $b ] 是正確的,而 [$a <= $b] 是錯誤的。

示例

以下是一個使用所有關係運算符的示例 -

#!/bin/sh

a=10
b=20

if [ $a -eq $b ]
then
   echo "$a -eq $b : a is equal to b"
else
   echo "$a -eq $b: a is not equal to b"
fi

if [ $a -ne $b ]
then
   echo "$a -ne $b: a is not equal to b"
else
   echo "$a -ne $b : a is equal to b"
fi

if [ $a -gt $b ]
then
   echo "$a -gt $b: a is greater than b"
else
   echo "$a -gt $b: a is not greater than b"
fi

if [ $a -lt $b ]
then
   echo "$a -lt $b: a is less than b"
else
   echo "$a -lt $b: a is not less than b"
fi

if [ $a -ge $b ]
then
   echo "$a -ge $b: a is greater or  equal to b"
else
   echo "$a -ge $b: a is not greater or equal to b"
fi

if [ $a -le $b ]
then
   echo "$a -le $b: a is less or  equal to b"
else
   echo "$a -le $b: a is not less or equal to b"
fi

以上指令碼將生成以下結果 -

10 -eq 20: a is not equal to b
10 -ne 20: a is not equal to b
10 -gt 20: a is not greater than b
10 -lt 20: a is less than b
10 -ge 20: a is not greater or equal to b
10 -le 20: a is less or  equal to b

在使用關係運算符時,需要考慮以下幾點 -

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

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

unix-basic-operators.htm
廣告