逻辑运算符有三个,分别是:非运算、或运算、与运算。
-
!
:非运算符。 -
-o
:或运算符。 -
-a
:与运算符。
因为 Shell 中并没有布尔类型,所以非运算符主要是对表达式取反。
#!/bin/bash
# author:陈树义
# site:www.chenshuyi.com
a=10
b=20
# 非运算
if !(( a == b ))
then
echo "a is not equal to b"
fi
# 或运算
if [ $a -lt 100 -o $b -gt 100 ]
then
echo "a < 100 or b > 100"
fi
# 与运算
if [ $a -lt 100 -a $b -gt 15 ]
then
echo "a < 100 and b > 15"
fi
值得注意的是,因为 Shell 语言并没有布尔型。所以如果你尝试在非运算符后面跟上一个「布尔值」,那么你会得到错误的结果。
#!/bin/bash
# author:陈树义
# site:http://www.shuyi.me
result=true
if [ !$result ]
then
echo "Hello"
fi
按照我们的理解,上面的例子应该不会打印出 Hello 字符,但实际结果是会打印。这是因为 Shell 中根本就没有布尔类型的值,所以 if 表达式中的字符串会被当成是一个字符串,字符串肯定就是 true 了,所以就会打印 Hello。其实如果我们随便输入一串字符,结果还是会输出 Hello。
原文链接:/shell/996129.html