概述
[[]]中的逻辑运算符使用 && 、|| ,推荐使用这种方式
[] 中的逻辑运算符使用 -a (表示and )、-o (表示or)
[[]]形式
逻辑运算本质是 运算符的两侧是2个 真假的判断条件,置于内容是字符串的判断还是数字的判断,都可以。
以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20,注意示例是是双括号
:
运算符 | 说明 | 举例 |
---|---|---|
&& | 逻辑的 AND | [[ $a -lt 100 && $b -gt 100 ]] 返回 false |
|| | 逻辑的 OR | [[ $a -lt 100 || $b -gt 100 ]] 返回 true |
示例:
#!/bin/bash
a=10
b=20
if [[ $a -lt 100 && $b -gt 100 ]]
then
echo "返回 true"
else
echo "返回 false" #打印
fi
if [[ $a -lt 100 || $b -gt 100 ]]
then
echo "返回 true" #打印
else
echo "返回 false"
fi
[] 形式
在单括号中,可以进行布尔运算,但是其中也包含逻辑与 、逻辑或语法
下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:
运算符 | 说明 | 举例 |
---|---|---|
! | 非运算,表达式为 true 则返回 false,否则返回 true。 | [ ! false ] 返回 true。 |
-o | 或运算,有一个表达式为 true 则返回 true。 | [ $a -lt 20 -o $b -gt 100 ] 返回 true。 |
-a | 与运算,两个表达式都为 true 才返回 true。 | [ $a -lt 20 -a $b -gt 100 ] 返回 false。 |
示例:
#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com
a=10
b=20
if [ $a != $b ]
then
echo "$a != $b : a 不等于 b" #执行打印
else
echo "$a == $b: a 等于 b"
fi
if [ $a -lt 100 -a $b -gt 15 ]
then
echo "$a 小于 100 且 $b 大于 15 : 返回 true" #执行打印
else
echo "$a 小于 100 且 $b 大于 15 : 返回 false"
fi
if [ $a -lt 100 -o $b -gt 100 ]
then
echo "$a 小于 100 或 $b 大于 100 : 返回 true" #执行打印
else
echo "$a 小于 100 或 $b 大于 100 : 返回 false"
fi
if [ $a -lt 5 -o $b -gt 100 ]
then
echo "$a 小于 5 或 $b 大于 100 : 返回 true"
else
echo "$a 小于 5 或 $b 大于 100 : 返回 false" #执行打印
fi