目录
一、条件测试
(一)测试方法
1.test
test [选项] 对象
echo $? 判断上条命令执行结果是否正确
0(非0) 输出0则判定上条命令执行结果正确(输出非0则判定上条命令执行结果不正确)
选项 | 作用 |
-d | 测试是否为文件夹 |
-f | 测试是否为普通文件 |
-e | 测试文件或目录是否存在 |
-a | 测试文件或目录是否存在,不建议使用此选项,不能用取反!= |
-L | 测试是否为软连接文件 |
-r | 判断当前用户是否有读权限,根据实际情况返回结果, |
-w | 判断当前用户是否有写权限,根据实际情况返回结果, |
-x | 判断当前用户是否有可执行权限,根据实际情况返回结果,root账户时其他用户有执行权限root账户也有,若其他账户没有执行权限则root也没有。 |
2.[ ]
方括号相当于test
[ -e /etc/fstab ] 就相当于 test -e /etc/fstab ,注意括号内左右两边的空格,不能少
3.[[ ]]
双括号相当于加强版[ ],可以支持正则表达式和通配符
二、比较
(一)数值比较
1.比较符号
符号 | 作用 |
-eq | 比较第一个正整数是否等于(equal = )第二个正整数 |
-ne | 比较第一个正整数不等于(not equal != )第二个正整数 |
-gt | 比较第一个正整数是否大于(Greate than > )第二个正整数 |
-lt | 比较第一个正整数是否小于(Lesser than < )第二个正整数 |
-ge | 比较第一个正整数是否大于等于(Greate or equal >= )第二个正整数 |
-le | 比较第一个正整数是否小于等于(Lesser or equal <= )第二个正整数 |
2.比较方式
用上述三种测试方法皆可比较
(二)字符串比较
1.比较符号
符号 | 作用 |
= | 比较第一个字符串是否等于(equal = )第二个字符串 |
!= | 比较第一个字符串不等于(not equal != )第二个字符串 |
-z | 测试字符串是否为空 |
-n | 测试字符串是否存在 |
2.比较方式
a=1 b=2 给a和b赋值
[ $a = $b ] 比较a和b的值
echo $? 判断上条命令执行结果是否正确
0(非0) 输出0则判定上条命令执行结果正确(输出非0则判定上条命令执行结果不正确)
三、逻辑测试(短路运算)
(一)短路与
1.定义
全真才为真,一假即为假,整个语句为整体,全部为真,整体才是真
2.语法
cmd1 && cmd2
(二)短路或
1.定义
一真即为真
2.语法
cmd1 || cmd2
前面cmd1或cmd1为真则整个表达式为真,前面表达式为假,或命令为假,才会执行后面的表达式2或命令2 。一真则为真。
四、if和case语句
(一)if语句
1.单分支
if [条件判断]
then (条件成立则走then)
[执行命令]
fi (if结束语句)
2.双分支
if [条件判断]
then (条件成立则走then)
[执行命令]
else (所有条件不成立则走else)
[执行命令]
fi (if结束语句)
3.多分支
if [条件判断]
then (条件1成立则走then)
[执行命令]
elif [条件判断2 ] (可添加多个elif )
then (条件2成立则走then)
[执行命令]
else (所有条件不成立则走else)
[执行命令]
fi (if结束语句)
4.示例
编写一个成绩脚本,使得学生输入分数判断自己的成绩是优秀(90-100)、良好(70-89)、及格(60-69)、不及格,罚抄10遍(小于60)
(二)case语句
1.格式(多分支)
case 变量引用 in
PAT1) 符合条件1执行分支1的命令,PAT1可以使用通配符
分支1命令
;; 每个分支结束的固定格式
PAT2) 符合条件1执行分支2的命令,PAT2可以使用通配符
分支2命令
;; 每个分支结束的固定格式,可以有多个分支
*) 不符合其他任意分支的默认分支
默认分支命令
;; 分支结束的固定格式
esac case语句结束标志
2.示例
编写一个系统工具箱的脚本,使得用户实现以下操作
1.查看磁盘信息
2.查看内存信息
3.查看cpu信息
4.查看网络信息
5.查看进程信息
6.退出工具箱
执行脚本结果
① 查看磁盘信息
② 查看内存信息
③ 查看cpu信息
④ 查看网络信息
⑤ 查看进程信息
⑥ 退出工具箱