条件测试
文件测试test命令
测试表达式是否成立,成立返回0,非0为不成立
一:test [选项] 条件表达式
二:[ 选项 条件表达式 ]
常用选项
整数测试
整数值比较
一:[ 整数变量1 操作符 整数变量2 ]
二:test 整数变量1 操作符 整数变量2
操作符:
字符串测试
- =:字符串内容相同
- !=:字符串内容不同,! 号表示相反的意思
- -z:字符串内容为空
- -n:字符是否存在
使用-z或-n测试变量时,变量需要加引号,避免有歧义而导致判断结果有误
逻辑测试
逻辑测试用于连接多个测试条件,并返回整个表达式的值。 逻辑测试主要有"逻辑与","逻辑或","逻辑否"三种
一:[ 表达式1 ] 操作符 [ 表达式2 ]
二:命令1 操作符 命令2
操作符:
-a或&& 逻辑与,而且
-o或|| 逻辑或,或者
[表达式1] && [表达式2] 等同于 [表达式1 -a 表达式2] 等同于 [[表达式1 && 表达式2]]
三元运算符
[ 条件表达式 ] && 值1 || 值2
|| 运算符的前面表达执行成功后将不会再运行后面的表达式
if语句
单分支结构
语法:
if [ 条件测试表达式 ] #如果 [ 为真 ]
then #那么
命令 #执行该命令
fi #退出
双分支结构
语法:
if [ 条件测试表达式 ] #如果 [ 为真 ]
then #那么 命令1 #执行该命令
else 否则
命令2 #执行命令2
fi #退出
多分支结构
if [ 条件测试表达式 ] #如果 [ 为真 ]
then #那么
命令1 #执行该命令
elif #又如果
命令2 #执行命令2
elif #又如果
命令3 #执行命令3
fi #退出
case语句的结构
语法:
case 变量引用 in
模式1)
命令分支1
;;
模式2)
命令分支2
;;
... *)
默认命令分支
esac
注意:
case支持glob风格的通配符:
* :任意长度任意字符
? :任意单个字符
[0-9] :指定范围内的任意单个字符
| :“或者”的意思,如: a|b