当前位置:网站首页>Shell编程之条件语句(二)

Shell编程之条件语句(二)

2022-08-10 21:23:00 灌南牛x人

目录

条件测试

条件测试操作

test命令

文件测试

常用的测试操作符

 整数值比较

 常用的测试操作符

字符串比较 

逻辑测试 

 if语句的结构 

单分支结构

双分支结构​

 多分支结构

 嵌套if语句

case语句结构

case多分支语句 

编写apache启动服务脚本


条件测试

条件测试操作

test命令

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

格式1:test 条件表达式

格式2:[ 条件表达式 ]

条件表达式:判断是与否

文件测试

[ 操作符 文件或目录 ]

常用的测试操作符

-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(Excute)
-b:测试是否为设备文件
-c:测试是否为字符设备文件
-s:测试存在且文件大小为空
-L:测试是否为链接文件
执行条件测试操作以后,通过预定义变量$? 可以获得测试命令的返回状态值,从而判断该条件是否成立。

一些操作

 

 

 第二种格式:

 

 

 整数值比较

[整数1 操作符 整数2]

 常用的测试操作符

-eq:等于(Equal)

-ne:不等于(Not Equal)

-gt:大于(Greater Than)

-lt:小于(Lesser Than)

-le:小于或等于(Lesser or Equal)

-ge:大于或等于(Greater or Equal)

 案例一

 案例2

字符串比较 

格式1:[字符串1 = 字符串2]

             [字符串1 != 字符串2 ]

格式2:[-z 字符串]

常用的测试操作符

=:字符串内容相同

!=:字符串内容不同,!号表示相反的意思

-z:字符串内容为空

案例1

 

 案例2

 案列3

逻辑测试 

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

格式2:命令1 操作符 命令2....

常用的测试操作符

-a或&&:逻辑与,“而且”的意思

-o或||:逻辑或,“或者”的意思

!:逻辑否

 if语句的结构 

单分支结构

第二个简单例子

 

 因为这个汉字太丑,如何去掉

 案例

 判断目录是否存在,启动 脚本以后,自定创建/date目录

 案例三

 遇到问题,没有反应

 加个中括号

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

条件判断: test一种形式, 【】中间只能使用=和!=比较字符串,  如果使用<、>需要进行转义\.

然后中间如果比较数字要用-lt等符号,不能使用\<比较数字,他会当成字符串处理

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

双分支结构

案例

 

案例2 

 

 例3

 多分支结构

 

 案例

 

 

  案列2

 嵌套if语句

例1.判断httpd服务有没有启动

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

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

if [  $? -ne 0  ];then    //有等于0,没有不等于0
      if [ "$(rpm -q httpd)"=="未安装软件包 httpd " ];then  //如果未非0,表示没有该服务 ,则表示未安装
注意:这里等号两边不能加空格
      echo “正在Apache服务请稍等..........”
        yum -y install httpd   //则下载httpd服务
        systemctl start httpd  //开启服务
        Else            //否则就是已存在安装包,只需要直接开启httpd服务
        systemctl start httpd
        fi
else
        echo "httpd is running"  //如果为0,表示该服务正在运行
Fi
1

移除httpd软件包后再执行脚本  

 

case语句结构

格式:
case 变量名称 in
模式1)
    命令序列
    ;;
模式2)
    程序段
    ;;
*)
    不包含第一个变量内容与第二个变量内容的其他程序执行段
    默认程序段
    ;;
esac

case行首必须以单词“in”,每一模式必须以单个右括号")"结束

双分号";;"表示命令序列的结束

模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]";还可以使用竖杠|表示或,比如a|b

最后的)表示默认模式,其中的相当于通配符

 

case多分支语句 

编写apache启动服务脚本

原网站

版权声明
本文为[灌南牛x人]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_67565536/article/details/124441144