目录
一.条件测试
1.条件测试操作
1.1 test 命令
测试表达式是否成立,若成立返回0,否则返回其他数值
格式1:test 条件表达式
格式2:【条件表达式】
1.2文件测试
文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否可读、可写、可执行等
格式:【操作符 文件或目录】
1.3常用的测试操作符
选项 | 说明 |
---|---|
-d | 测试是否为自录(Directory) |
-e | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(write) |
-x | 测试是否设置有可执行(Excute)权限 |
-b | 测试是否为设备文件 |
-c | 测试是否为字符设备文件 |
-s | 测试存在且文件大小为空 |
-L | 测试是否为链接文件 |
示例1:
示例2:1 &&前条件成立则&&后面的 ”yes“不显示
2 &&前条件不成立则显示&&后面的 ”yes“
2.整数值比较
格式:【整数1 操作符 整数2】
2.1 常用的测试操作符
选项 | 说明 |
---|---|
-eq | 等于(Equal) |
-ne | 不等于(Not Equal) |
-gt | 大于(Greater Than) |
-It | 小于(Lesser Than) |
-le | 小于或等于(Lesser or Equal) |
-ge | 大于或等于(Greater or Equal) |
示例1:
示例2:查看系统内存是否大于100M,如果大于则显示提示
3.字符串比较
格式1:【 字符串1 = 字符串2 】
【 字符串1 != 字符串2 】
格式2:【 -z 字符串 】
3.1 常用的测试操作符
选项 | 说明 |
---|---|
= | 字符串内容相同 |
!= | 字符串内容不同,!号表示相反的意思 |
-z | 字符串内容为空 |
示例1:
示例2:
4.逻辑测试
格式1:【表达式1】 操作符 【表达式2】...
格式2:命令1 操作符 命令2 ...
4.1 常用的测试操作符
选项 | 说明 |
---|---|
-a或&& | 逻辑与,“而且”的意思 |
-o或|| | 逻辑或,“或者”的意思 |
! | 逻辑否 |
示例1:
示例2:
二. if 语句
1. 单分支结构
结构图:
单分支只做一次判断,判断成立则输出"OK",不成立则不输出
示例1:数字大小对比,成立则输出“OK”不成立则不输出
chmod +x 文件名 加权限否则无法运行
示例2:判断文件是否存在,如果不存在则创建该文件
2. 双分支结构
结构图:
示例1:判断指定的IP地址是否开启进行 ping 通,能ping通则给出“UP” 若不能ping通则给出“down”
/dev/null 是黑洞,用来存放垃圾文件
-c 是ping的次数,-i 是ping的间隔时间
示例2:创建用户并设置密码
3. 多分枝结构
结构图:
示例1:判断/home的文件类别,并以多种文件类别进行判断
示例2:
4. 嵌套语句
判断httpd服务有没有启动
if 判断是否启动
如果启动------输出已启动
如果没启动----判断是否安装---如果安装---启动
示例1 检测是否有httpd服务,没有的话下载并启动
三. case 语句
1. case 语句说明
case语句可以使脚本程序的结构更加清晰、层次分明,常用于服务的启动、重启、停止的脚本,有的服务不提供这种控制脚本,需要用case语句编写case语句
主要适用于以下情况:某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列。这种情况与多分支的if语句非常相似,只不过if语句需要判断多个不同的条件,而case语句只是判断一个变量的不同取值
结构图:
示例1 判断输入的字符类型
示例2 利用位置变量信息以脚本的形式开始httpd的服务