Shell test命令的逻辑运算
test命令的逻辑运算主要用于if语句。
Shell提供test命令进行逻辑运算,[ ]是test命令等价写法。平时使用[ ]更多。
详情可查看帮助
man test
test命令语法
test 表达式
test与表达式之间用空格分开。
变态的返回结果
0真1假。
因为test命令通过退出状态来返回值:
退出状态为0表示表达式为真;
退出状态为1表示表达式为假。
[ ]语法
[ 表达式 ]
test命令的等价写法。
表达式的前后必须保留空格。
表达式中的逻辑运算有自己专门的语法。
test命令的逻辑运算
test命令的逻辑运算 | 说明 |
---|---|
! | 非 |
-a | and,与 |
-o | or,或 |
示例
例1:直接在终端每句依次执行。(懒得写文件)
[ ! 1 -eq 1 ]
echo $?
[ ! 1 -eq 2 ]
echo $?
[ 1 -eq 2 -a 1 -eq 1 ]
echo $?
[ 1 -eq 1 -a 1 -eq 1 ]
echo $?
[ 1 -eq 1 -o 1 -eq 1 ]
echo $?
[ 1 -eq 1 -o 1 -eq 0 ]
echo $?
运行结果
例2:文件中if使用逻辑运算
文件 06logic-02test.sh
#!/bin/bash
#test命令中的逻辑运算
if [ ! 2 -eq 1 ]
then
echo '! 2 -eq 1 成立'
else
echo "! 2 -eq 1 不成立"
fi
if test 1 -eq 0 -a 1 -eq 1
then
echo '1 -eq 0 -a 1 -eq 1 成立'
else
echo "1 -eq 0 -a 1 -eq 1 不成立"
fi
if [ 1 -eq 0 -o 1 -eq 1 ]
then
echo '1 -eq 0 -o 1 -eq 1 成立'
else
echo "1 -eq 0 -o 1 -eq 1 不成立"
fi