一、条件判断的两种方式
1.1 test
test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
test 命令期望在命令行中找到一个参数,当 shell 没有为变量赋值时,则将该变量视为空。这意味着在处理脚本时,一旦脚本寻找的参数不存在,则 test 将报告该错误。
test [操作符选项] 表达式
1.2 中括号
[ 操作符选项 表达式 ]
[ -f /opt/abc.txt ]
注意[]空格,否则会失败
测试是否成功使用返回值
boole |
true(真) |
false(假) |
使用场景 |
返回码 |
0 |
非0 |
Linux系统 shell脚本 |
1 |
0 |
Java C |
1.3 文件测试操作符
-e |
测试指定的文件或者目录是否存在 |
-f |
测试指定对象是否为文件;指定的文件是否存在 |
-d |
测试指定的对象是否为目录;指定的目录是否存在 |
-r |
测试指定用户是否有读权限 |
-w |
测试当前用户是否有写权限 |
-x |
测试当前用户是否有执行权限 |
-L |
测试文件是否为符号链接(软链接文件) |
二、整数值比较
操作符
-eq |
等于 |
== |
-gt |
大于 |
\> |
-lt |
小于 |
\< |
-ge |
大于等于 |
|
-le |
小于等于 |
|
-ne |
不等于 |
!= |
[ 整数变量1 操作符 整数变量2]
一般是字符表达式,很少用符号表达式,会有问题
三、字符串比较
[ 字符窜1 = 字符窜2 ] 或者 [ 字符窜1 == 字符窜2 ] 判断是否相同
[ 字符窜1 != 字符窜2 ] 判断是否不相同
##################################
[ -z "字符串" ] -z:判断字符串是否为空;或者指定的变量是否为空值
[ -n “字符串” ] -n:检查是否有字符串存在
注:如果测试的字符串是变量,我们一般加上双引号,防止产生歧义
四、逻辑测试
-a && 且 前后条件都要成立
-o || 或 只需前后条件中一个成立
[ 表达式1 ] && [ 表达式2 ] 等同于 [ 表达式1 -a 表达式2 ] [[ 表达式1 && 表达式2 ]]
[ 表达式1 ] || [ 表达式2 ] 等同于 [ 表达式1 -o 表达式2 ] [[ 表达式1 || 表达式2 ]]
五、三元运算符
#Java c 条件表达式?a:b 当表达式为真时,取a值;当表达式为假时,取b值 #shell [ 表达式 ] && a || b 等价于if双分支 [ 表达式 ] && a 等价于if单分支 类似if语句