文章目录
- 一、条件测试
- 二、if语句的结构
- 1、单分支结构
- 2、双分支结构
- 3、多分支结构
- 4、if嵌套语句
- 三、case语句的结构
一、条件测试
1、test命令
测试表达式是否成立,若不成立返回0,否则返回其他数值
2、文件测试
常用操作符 | 说明 |
---|---|
-d | 测试是否为目录(Directory) |
-e | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(Write) |
-x | 测试当前用户是否有权限执行(eXcute) |
-b | 测试是否为设备文件 |
-c | 测试是否为字符设备 |
-s | 测试存在且文件大小为空 |
-L | 测试是否为链接文件 |
0为真,1为假
3、整数值比较
-eq: 等于 -ne: 不等于 -gt: 大于 -lt: 小于 -le: 小于等于 -ge: 大于等于
4、字符串比较
常用操作符 | 说明 |
---|---|
= | 字符串内容相同 |
!= | 字符串内容不同,!号表示相反的意思 |
-z | 字符串内容为空 |
-n | 检查是否有字符串存在 |
5、逻辑测试
常用操作符 | 说明 |
---|---|
-a或&& | 逻辑与,而且的意思 |
-o或|| | 逻辑或,或者的意思 |
! | 逻辑否 |
二、if语句的结构
1、单分支结构
单个括号([ ]):必须要有空格 两个字符或数字之间的比较左右必须有空格
条件判断:
test一种形式,[ ]中间只能使用=和!=比较字符串,如果使用< 、>需要进行转义.
然后中间如果比较数字要用-lt 等符号,不能使用 < 比较数字,他会当成字符串处理
两个括号[[ ]] :可用于处理逻辑命令,也可以处理字符串是否相等,且使用< 、>不用转义符
2、双分支结构
3、多分支结构
4、if嵌套语句
#!/bin/bash
ps aux | grep httpd | grep -v grep > /dev/null #查询httpd的进程是否允许,排除掉grep进程,不显示查询结果
if [ $? -ne 0 ];then #如果不为0说明程序执行成功if [[ $(rpm -q httpd 2>/dev/null) =~ "未安装" ]];then # =~表示正则匹配是否包含未安装yum install -y httpdfisystemctl start httpdecho "httpd is running"
elseecho "httpd is running"
fi
三、case语句的结构
case 语句可以使脚本程序的结构更加清晰、层次分明,常用于服务的启动、重启、停止的脚本,有的服务不提供这种控制脚本,需要用case语句编写
case 语句主要适用于以下情况: 某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列。这种情况与多分支的 if 语句非常相似,只不过 if 语句需要判断多个 不同的条件,而 case 语句只是判断一个变量的不同取值。
case语句注意事项
①case行首必须以单词“in”,每一模式必须以单个右括号")"结束
②双分号";;"表示命令序列的结束
③模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]",还可以用竖杠符号 “|”表示或,如“A|B”。
最后的*)表示默认模式,其中的*相当于通配符