Shell编程之条件语句

一、 条件测试

1.1 test命令

  • 测试表达式是否成立,若成立返回0,否则返回其他数值

    格式1:test 条件表达式
    格式2:[ 条件表达式 ]      PS:[空格 表达式 空格]
    

条件表达式,对数值(动作或处理对象)来判断是与否
test是命令集操作字符

[ 条件表达式 ] ——至少应该有一个空格
[ ]代表了表达式

输入完后可以echo 一个$?来查看,是0就正确,非0就代表异常
echo $?

1.2 文件测试

格式:[ 操作符 文件或目录 ]

常用的测试操作符

常用操作符说明
-d测试是否为目录(Directory)
-e测试目录或文件是否存在(Exist)
-f测试是否为文件(File)
-r测试当前用户是否权限读取(Read)
-w测试当前用户是否有权限写入(Write)
-x测试当前用户是否有权限执行(eXcute)
-b测试是否为设备文件
-c测试是否为字符设备文件
-s测试存在且文件大小为空
-L测试是否为链接文件
  执行条件测试操作以后,通过预定义变量$?可以获得测试命令的返回状态值,从而判断该条件是否成立。例如,执行一下操作可测试目录/media/是否存在,如果返回值$?为0,表示存在此目录,否则表示不存在或者虽然存在或者虽然存在但不是目录。

实例
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

创建目录
在这里插入图片描述

在这里插入图片描述

1.3 整数值比较

 [ 整数1 操作符 整数2 ]

常用的测试操作符

-eq等于(Equal)
-ne不等于(Not Equal)
-gt大于(Greater Than)
-lt小于(Lesser Than)
-le小于或等于(Lesser or Equal)
-ge大于或等于(Greater or Equal)

判断who下面用户是否小于4,如果小于4,就输入“用户太少”
在这里插入图片描述

查看内存命令 free -m
在这里插入图片描述
过滤出此行
在这里插入图片描述

1.4 字符串比较

格式1:[ 字符串1 = 字符串2 ]
             [ 字符串1 ! = 字符串2 ]
格式2:[ -z 字符串 ]

常用的测试操作符

常用操作符说明
=字符串内容相同
!=字符串内容不同,“ ! ”表示相反的意思
-z字符串内容为空
-n检查是否有字符串存在

在这里插入图片描述
在这里插入图片描述

1.5 逻辑测试

格式1:[ 表达式1 ] 操作符 [ 表达式2 ]
格式2:命令1 操作符 命令2

常用的测试操作符

常用操作符说明
-a或&&逻辑与,“而且”的意思
-o或丨丨逻辑或,“或者”的意思
逻辑否

实例:
在这里插入图片描述
方法1:
在这里插入图片描述
方法2:
在这里插入图片描述

在这里插入图片描述

二、if语句的结构

2.1 单分支结构

在这里插入图片描述

在这里插入图片描述
实例

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

没有目录,就创建成功;有目录,就创建失败
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

单个括号( [ ] ):必须要有空格  两个字符或数字之间的比较左右必须有空格

条件判断: 
test是一种形式,[ ]中间只能使用 = 和 != 比较字符串,如果使用< 、>需要进行转义 \.
然后中间如果比较数字要用 -lt 等符号,不能使用 \< 比较数字,他会当成字符串处理

两个括号 [[ ]] :可用于处理逻辑命令,也可以处理字符串是否相等,且使用< 、>不用转义符

2.2 双分支结构

在这里插入图片描述
在这里插入图片描述
实例
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

查询开启apache的服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 多分支结构

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

实例
以考试的分数为例

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
输入非法字符时,就会显示报错信息;此时就要对脚本进行完善。

在这里插入图片描述

2.4 嵌套语句

例子
判断httpd服务有没有启动

if 判断是否启动

if 如果启动-----输出已启动
     如果没启动-----判断是否安装-----如果安装-----启动
                                        如果没安装-----安装-----如果安装成功-----启动
                                                                                                         如果安装不成功------报错

ps aux | grep httpd | grep -v grep ——查询过滤httpd服务

if [ $? -ne 0 ];then   ——有等于0,没有不等于0
        if [ "$(rpm -q httpd)" == "未安装软件包 httpd " ];then   ——如果为非0,表示没有
注意:这里等号两边不能加空格
	   	yum -y install httpd   ——下载httpd服务
		systemctl start httpd   ——开启服务
else   ——如果已存在安装包,只需要直接开启httpd服务即可
		echo "httpd is running"    ——如果为0,表示该服务正在运作
fi

三、case语句

case 语句可以使脚本程序的结构更加清晰、层次分明,常用语服务的启动、重启、停止的脚本,有的服务不提供这种控制脚本,需要用case语句编写。

case 语句主要适用于一下情况:某个变量存在多重取值,需要对其中的每一种取值分别执行不同的命令序列。这种情况与多分支的 if 语句非常相似,只不过 if 语句需要判断多个不同的条件,而 case 语句只是判断一个变量的不同取值。

3.1 case多分支结构

在这里插入图片描述
case 行尾必须为单词“ in ”,每一模式必须以右括号“ ) ”结束。
双分号“ ;; ”表示命令序列的结束。
模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]“;还可以用竖杠符号“ | ”表示或,如” A|B “。
最后的” *) "表示默认模式,其中的 *相当于通配符。

在这里插入图片描述

#!/bin/bash
read -p "请输入一个字符,并按Enter键确认:" KEY

case "$KEY" in
[a-z]|[A-Z])
echo "你输入的是字母"
;;
[0-9])
echo "你输入的是数字"
;;
*)
echo "你输入的是空格,*,_,等特殊字符"
esac

3.1.1 编写Apache启动服务脚本

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值