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
广告