1、基础知识
1.1、语法格式
判断条件是否成立的过程我们称为条件判断,他一般有两种表现形式:
形式1: test 条件表达式
形式2: [ 条件表达式 ]
注意:
但后者需要注意方括号[、]与条件表达式之间至少有一个空格。
条件成立,状态返回值是0;条件不成立,状态返回值是1
1.2、文件测试表达式符号

1.3、字符串比较表达式符号

1.4、整数比较表达式符号

1.5、逻辑表达式符号

1.6、测试表达式 test、[]、、[[]]、(())的区别总结

2、实战
2.1、逻辑表达式
2.1.1、语法作用说明
符号 样式 作用
&& 命令1 && 命令2 只有1成功,2才执行
|| 命令1 || 命令2 1和2只能执行一个
2.1.2、示例
cat << 'CAT_END' > test.sh
#!/bin/bash
[ 1 -eq 1 ] && echo "条件成立"
[ 1 -eq 2 ] || echo "条件不成立"
CAT_END
2.2、文件表达式
2.2.1、语法作用说明
符号 样式 作用
-f|d|s -f file_name 判断文件格式(普通文件|目录|链接文件)
-r|w|x -x file_name 判断文件权限(读|写|执行)
2.2.2、示例
cat << 'CAT_END' > test.sh
#!/bin/bash
[ -f /root/test.sh ] && echo "是一个文件"
[ -d /root/test.sh ] || echo "不是一个文件"
CAT_END
2.3、数字表达式
n1 -eq n2 # 相等
n1 -ne n2 # 不等于
n1 -ge n2 # 大于等于
n1 -gt n2 # 大于
n1 -lt n2 # 小于
n1 -le n2 # 小于等于
2.4、字符串表达式
[ a == a ]
echo $? # 0
[ a != a ]
echo $? # 1
[ -z daf ]
[ ! -z daf ]
[ -n daf ]
[ ! -n daf ]
3、逻辑组合实战
3.1、条件组合
所谓的条件组合,主要说的是,多条件场景下的 或、与、非三种情况,这些内容,我们一般基于下列方式来进行解析:
! 非运算,表达式结果取反。示例 [ ! false ] 返回 true。
-o 或运算,多个表达式只要有一个为true,整体为true。
示例:[ $a -lt 20 -o $b -gt 100 ]。
-a 与运算,多个表达式都为true,整体为true。
示例:[ $a -lt 20 -a $b -gt 100 ] 返回 false。
3.1.1、非运算实践
# a=5
# [ $a -gt 5 ]
# echo $?
1
# [ ! $a -gt 5 ]
# echo $?
0
3.1.2、或运算实践
# a=5
# b=7
# [ $a -gt 3 -o $b -lt 7 ]
# echo $?
0
# [ $a -lt 3 -o $b -lt 7 ]
# echo $?
1
3.1.3、与运算实践
# a=5
# b=7
# [ $a -gt 3 -a $b -lt 7 ]
# echo $?
1
# [ $a -gt 3 -a $b -eq 7 ]
# echo $?
0
3.2、逻辑进阶实践
3.2.1、简介
所谓的逻辑进阶,说的还是 && 和 || ,只不过说的是完整写法,结果是整体的状态值
[[ 条件1 && 条件2 ]] 只有所有条件为真,整体结果为真。
[[ 条件1 || 条件2 ]] 只要有一个条件为真,整体结果为真。
其实,它也可以理解为 -a 或者 -o 的另外一种写法。
3.2.2、或运算实践
# [[ $a -gt 3 || $b -lt 7 ]]
# echo $?
0
# [[ $a -lt 3 || $b -lt 7 ]]
# echo $?
1
3.2.3、与运算实践
# [[ $a -gt 3 && $b -lt 7 ]]
# echo $?
1
# [[ $a -gt 3 && $b -eq 7 ]]
# echo $?
0