一.条件测试
1.文件测试与整数测试
test命令
-
格式一: test 条件表达式
-
格式二: [ 条件表达式 ]
条件测试:判断某需求是否满足,需要由测试机制来实现,专用的测试表达式需要由测试命令辅助完成。
测试过程,实现评估布尔声明,以便用在条件性环境下进行执行:
- 若为真,则状态码变量 $? 返回0
- 若为假,则状态码变量 $? 返回非0
举例:
-e和-a都可以测试文件是否存在,但和 !(取反)连用时,-a可能不准确,建议使用-e。
举例:
测试root用户对文件是否拥有读、写、执行权限。
发现root用户的读取和写入权限,不受文件的基本权限控制;但执行权限受文件基本权限控制。
举例:
2.整数测试
[ 整数变量1 操作符 整数变量2 ]
test 整数变量1 操作符 整数变量2
- -eq:第一个数等于(Equal)第二个数
- -ne:第一个数不等于(Not Equal)第二个数
- -gt:第一个数大于(Greater Than)第二个数
- -lt:第一个数小于(Lesser Than)第二个数
- -le:第一个数小于或等于(Lesser or Equal)第二个数
- -ge:第一个数大于或等于(Greater or Equal)第二个数
举例:
3.字符串测试
常用的测试操作符
- =:字符串内容相同
- !=:字符串内容不同,! 号表示相反的意思
- -z:字符串内容为空
- -n:字符是否存在
常见四种字符串比较
[ "字符串1" = "字符串2" ] //测试字符串1和字符串2的内容是否相同
[ "字符串1" != "字符串2” ] //测试字符串1和字符串2的内容是否不同
[ -z "字符串" ] //测试字符串是否为空,或者指定的变量是否为空值。(测试字符串的长度是否为零)
[ -n "字符串" ] //测试字符串是否存在,即是否不为空。(测试字符串的长度是否非零)
举例:
使用-z或-n测试变量时,变量需要加引号,避免有歧义而导致判断结果有误。
举例:
4.逻辑测试
格式1:[ 表达式1 ] 操作符 [ 表达式2 ]
格式2:命令1 操作符 命令2 ...
常见的测试操作符
-a或&&:逻辑与,“而且” 的意思
-o 或||:逻辑或,”或者“ 的意思
!:逻辑否
短路与&& 短路或||
举例:
二.if语句
2.1单分支语句格式
格式:
if 条件测试操作
then 命令顺序
fi
举例:
注:if单分支语句与$$效果一致
如果if后面的条件测试成立则执行then后的命令如果不成立则直接结束判断
[表达式1]&&[表达式2]
如果表达式1成立则执行表达式2如果不成立则不会执行
2.2双分支结构
格式:
if 条件测试操作
then 命令顺序1
else 命令顺序2
fi分支语句
举例:
举例2
2.3多分支结构
举例:
三.case语句
格式: case 变量值 in
模式1) 命令序列1 ;;
模式2) 命令序列2 ;;
- 默认命令序列 esac
举例:
注:提示用户输入分数(0-100),判断分数范围,分出优秀、良好、及格、不及格四档。如果用户输入的分数值不在0-100之间,则提示重新输入。