Unix / Linux - Shell 布尔运算符示例

Bourne Shell 支持以下布尔运算符。

假设变量a为10,变量b为20 −

运算符 说明 示例
! 这是逻辑非。 这会将 true 条件反转为 false,反之亦然。 [ ! false ] 为 true。
-o 这是逻辑OR。 如果其中一个操作数为真,则条件变为真。 [ $a -lt 20 -o $b -gt 100 ] 为 true。
-a 这是逻辑AND。 如果两个操作数都为真,则条件为真,否则为假。 [ $a -lt 20 -a $b -gt 100 ] 为 false。

示例

这是一个使用了所有布尔运算符的例子 −

#!/bin/sh

a=10
b=20

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

if [ $a -lt 100 -a $b -gt 15 ]
then
   echo "$a -lt 100 -a $b -gt 15 : returns true"
else
   echo "$a -lt 100 -a $b -gt 15 : returns false"
fi

if [ $a -lt 100 -o $b -gt 100 ]
then
   echo "$a -lt 100 -o $b -gt 100 : returns true"
else
   echo "$a -lt 100 -o $b -gt 100 : returns false"
fi

if [ $a -lt 5 -o $b -gt 100 ]
then
   echo "$a -lt 100 -o $b -gt 100 : returns true"
else
   echo "$a -lt 100 -o $b -gt 100 : returns false"
fi

上面的脚本会产生下面的结果 −

10 != 20 : a is not equal to b
10 -lt 100 -a 20 -gt 15 : returns true
10 -lt 100 -o 20 -gt 100 : returns true
10 -lt 5 -o 20 -gt 100 : returns false

使用运算符需要注意以下几点 −

  • 运算符和表达式之间必须有空格。 例如,2+2 是不正确的; 应该写成2 + 2。

  • if...then...else...fi 语句是决策语句,在下一章中解释。

unix_basic_operators.htm