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 $?

运行结果

img


例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

img