目录
1.条件测试
1.1 test命令
1.2 文件测试
1.3 整数数值比较
1.4 字符串比较
1.5 逻辑测试
2.if语句
2.1 单分支
2.2 双分支
2.3 多分支
2.4 if嵌套语句
3.case语句
3.1.case的概述
3.2 case实验
1.条件测试
1.1 test命令
测试表达式是否成立,若成立返回0,否则返回其他数值
格式1:test 条件表达式
格式2:[ 条件表达式 ]
1.2 文件测试
1.格式
操作符 文件名或者目录名
2.常用的测试操作符
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(Excute)
-b:测试是否为设备文件
-c:测试是否为字符设备文件
-s:测试存在且文件大小为空
-L:测试是否为链接文件
1.3 整数数值比较
格式: [ 整数1 操作符 整数2 ] 公式
操作符 | 含义 |
-eq | 等于(Equal) |
-ne | 不等于(Not Equal) |
-lt | 小于(Leser Than) |
-gt | 大于(Greater Than) |
-le | 小于或等于(Lesser or Equal) |
-ge | 大于或等于(Greater or Equal) |
1.4 字符串比较
1.格式:
[ 字符串1 = 字符串2 ] #判断是否相等
[ 字符串1 != 字符串2 ] #判断是否不等
[ -z 字符串 ] #判断字符串cha
2.常用的测试操作符
(1)=:字符串内容相同
(2)!=:字符串内容不同,!号表示相反的意思
(3)-z:字符串内容为空
(4)-n:字符是否存在
1.5 逻辑测试
1. 格式
(1)[ 表达式1 ] 操作符 [ 表达式2 ]
(2)命令1 操作符 命令2
2.常见条件
(1)-a或&&:逻辑与,“而且”的意思全真才为真;
(2)-o或||:逻辑或,“或者” 的意思一真即为真。
1.[ 表达式1 ] && [ 表达式2 ] 等同于 [ 表达式1 -a 表达式2 ] 等同于 [[ 表达式1 && 表达式2 ]]
2.[ 表达式1 ] || [ 表达式2 ] 等同于 [ 表达式1 -o 表达式2 ] 等同于 [[ 表达式1 || 表达式2 ]]
3.三元运算符
[ 表达式 ] && a || b
当条件表达式为真时,取a值;当条件表达式为假时,取b值
2.if语句
2.1 单分支
与[ 表达式 ] && 效果相同
格式:
if [ 条件测试操作 ];
then 命令序列
fi #注意后面有个结尾,开头结尾要凑成一对否则会报语法错误
2.2 双分支
格式:
if 条件
then 命令1
else 命令2
fi
2.3 多分支
格式:
if 条件1
then 命令1
elif 条件2
then 命令2
else 命令3
fi
2.4 if嵌套语句
例 1.判断httpd服务有没有启动
判断是否启动
如果启动------输出已启动
如果没启动----判断是否安装---如果安装---启动
如果没安装----安装---如果安装成功---启动
如果安装不成功-----报错
ps aux | grep httpd | grep -v grep
if [ $? -ne 0 ];then
if [ "$(rpm -q httpd)" == "未安装软件包 httpd " ];then
yum -y install httpd
systemctl start httpd
else
systemctl start httpd
fi
else
echo "httpd is running"
fi
移除httpd软件包后再执行脚本
3.case语句
3.1.case的概述
case 语句可以使脚本程序的结构更加清晰、层次分明,常用于服务的启动、重启、停止的脚本,有的服务不提供这种控制脚本,需要用case语句编写。
case 语句主要适用于以下情况:某个变量存在多种取值,需要对其中的每一种取值分别执行 不同的命令序列。这种情况与多分支的 if 语句非常相似,只不过 if 语句需要判断多个 不同的条件,而 case 语句只是判断一个变量的不同取值。
格式:
case 变量值 in
模式 1)
命令序列 1
;;
模式 2)
命令序列 1
;;
* )
默认命令序列
esac
ase 行尾必须为单词“in”,每一模式必须以右括号“)”结束。
1.双分号“;;”表示命令序列的结束。
2.模式字符串中,可以用方括号表示一个连续的范围,如“[0-9]”;还可以用竖杠符号 “|”表示或,如“A|B”。
3.最后的“*)”表示默认模式,其中的*相当于通配符。
3.2 case实验
1.检查用户输入的字符类型
2. 编写 apache 启动服务脚本