Shell-条件表达式[ expression ]

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

 

posted @ 2023-05-24 11:00  小粉优化大师  阅读(67)  评论(0)    收藏  举报