条件测试
文件测试test命令
测试表达式是否成立,成立返回0,非0为不成立
一:test [选项] 条件表达式
二:[ 选项 条件表达式 ]
常用选项
-d | 测试文件是否为目录 |
-f | 测试文件是否为普通文件 |
-e | 测试目录或文件是否存在(建议用-e -a不准确) |
-r | 测试当前用户是否有读取权限 |
-w | 测试当前用户是否有写入权限 |
-x | 测试当前用户是否有执行权限 |
-L |
测试是否为符号链接 |
整数测试
整数值比较
一:[ 整数变量1 操作符 整数变量2 ]
二:test 整数变量1 操作符 整数变量2
操作符:
-eq | 等于 |
-ne | 不等于 |
-gt | 大于 |
-lt | 小于 |
-le | 小于或等于 |
-ge | 大于或等于 |
整数测试
整数值比较
一:[ 整数变量1 操作符 整数变量2 ]
二:test 整数变量1 操作符 整数变量2
操作符:
使用-z或-n测试变量时,变量需要加引号,避免有歧义而导致判断结果有误
逻辑测试
逻辑测试用于连接多个测试条件,并返回整个表达式的值。 逻辑测试主要有"逻辑与","逻辑或","逻辑否"三种
一:[ 表达式1 ] 操作符 [ 表达式2 ]
二:命令1 操作符 命令2
操作符:
-a或&& 逻辑与,而且
-o或|| 逻辑或,或者
[表达式1] && [表达式2] 等同于 [表达式1 -a 表达式2] 等同于 [[表达式1 && 表达式2]]
三元运算符
[ 条件表达式 ] && 值1 || 值2
|| 运算符的前面表达执行成功后将不会再运行后面的表达式
![](/i/l/?n=22&i=blog/2964633/202210/2964633-20221023183918849-2020580303.png)
if语句
单分支结构
![](/i/l/?n=22&i=blog/2964633/202210/2964633-20221023183933357-456388722.png)
语法:
if [ 条件测试表达式 ] #如果 [ 为真 ]
then #那么
命令 #执行该命令
fi #退出
双分支结构
语法:
if [ 条件测试表达式 ] #如果 [ 为真 ]
then #那么 命令1 #执行该命令
else 否则
命令2 #执行命令2
fi #退出
多分支结构
if [ 条件测试表达式 ] #如果 [ 为真 ]
then #那么
命令1 #执行该命令
elif #又如果
命令2 #执行命令2
elif #又如果
命令3 #执行命令3
fi #退出
![](/i/l/?n=22&i=blog/2964633/202210/2964633-20221023184310353-1619411498.png)
case语句的结构
语法:
case 变量引用 in
模式1)
命令分支1
;;
模式2)
命令分支2
;;
... *)
默认命令分支
esac
注意:
case支持glob风格的通配符:
* :任意长度任意字符
? :任意单个字符
[0-9] :指定范围内的任意单个字符
| :“或者”的意思,如: a|b
![](/i/l/?n=22&i=blog/2964633/202210/2964633-20221023184352669-401323022.png)
标签:case,shell,变量,整数,命令,操作符,测试,条件,表达式 From: https://www.cnblogs.com/fengxia6/p/16809639.html