一、条件语句
条件测试:判断某需求是否满足,需要由测试机制来实现,专用的测试表达式需要由测试命令辅助完成。
测试过程,实现评估布尔声明,以便用在条件性环境下进行执行
- 若真,则状态码变量 $? 返回0
- 若假,则状态码变量 $? 返回1
1.1 test命令测试条件表达式
- 格式1:test [操作符选项] 条件表达式
- 格式2:[ 操作符 条件表达式 ]
常见测试操作符:
操作符 | 含义 |
---|---|
-e | 测试目录或文件是否存在(Exist) |
-d | 测试是否为目录(directory) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(Write) |
-x | 测试当前用户是否有权限执行(eXcute) |
示例1:test [操作符选项] 条件表达式
示例2:[ 操作符 条件表达式 ]
1.2 整数数值比较表达式
- 格式:[ 整数1 操作符 整数2 ]
常见测试操作符:
操作符 | 含义 |
---|---|
-eq | 等于(Equal) |
-ne | 不等于(Not Equal) |
-lt | 小于(Leser Than) |
-gt | 大于(Greater Than) |
-le | 小于或等于(Lesser or Equal) |
-ge | 大于或等于(Greater or Equal) |
示例:比较两个整数大小
1.3 字符串比较
常见测试操作符:
操作符 | 含义 |
---|---|
== | 等于 |
!> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
示例:
1.4 逻辑测试
- 格式1:[ 表达式1 ] 操作符 [ 表达式2 ]
- 格式2: [[ 命令1 操作符 命令2 ]]
常见条件
- -a或&&:逻辑与,“而且”的意思全真才为真
- -o或||:逻辑或,“或者”的意思一真即为真
[ 表达式1 ] && [ 表达式2 ] 等同于 [ 表达式1 -a 表达式2 ] 等同于 [[ 表达式1 && 表达式2 ]]
[ 表达式1 ] || [ 表达式2 ] 等同于 [ 表达式1 -o 表达式2 ] 等同于 [[ 表达式1 || 表达式2 ]]
注:
- 直接引用变量,最好用引号引起来,特殊符号慎用!!!
- “ [[ ]] ”的功能更强大,可直接引用变量,无需加引号;支持正则表达式
二、if语句
2.1 单分支结构
格式:
if [ 条件判断式 ];
then
#当条件判断成立时,可以进行的命令工作内容
fi #这里将if反过来写,结束if语句的意思
2.2 双分支结构
格式:
if 判断条件; then
条件为真的分支代码
else
条件为假的分支代码
fi
2.3 多分支结构
格式:
if [ 条件判断式 ];
then
当条件判断成立时,可以进行的命令工作内容
elif [ 条件判断式二 ];
then
当条件判断成立时,可以进行的命令工作内容
else
当上面的条件判断都不成立时,可以进行的命令工作内容
fi
三、case语句
格式:
case 变量名称 in
“第一个变量内容”
程序段
;;
“第二个变量内容”
程序段
;;
*)
不包含第一个变量内容与第二个变量内容的其他程序执行段
默认程序段
;;
esac
-
case行首必须以单词“in”,每一模式必须以单个右括号")"结束
-
双分号";;"表示命令序列的结束
-
模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]";还可以使用竖杠|表示或,比如a|b
-
最后的)表示默认模式,其中的相当于通配符