美文网首页
day66-shell编程之-if条件语句

day66-shell编程之-if条件语句

作者: 文娟_狼剩 | 来源:发表于2019-07-20 23:47 被阅读0次

1、 if条件语句

if条件语句,简单来说,其语义类似于汉语中的“如果...那么...”。if语句是Linux运维人员在实际生产过程中使用的最频繁也是最重要的语句。因此,务必重视if条件语句的知识,并牢固掌握。

1.1 单分支

1.1.1语法
\\第一种语法:
if <条件表达式>
then
    指令
fi
\\第二种语法:
if <条件表达式>;then
    指令
fi
1.1.2 逻辑流程图
1.1.3 if表达式嵌套

if单分支语句执行流程图的条件语句还可以嵌套(即if条件语句中还有if条件语句),注意每个if条件语句中都要有一个与之对应的fi(反if),每个if和它下面最近的fi成对搭配,语法如下所示:

if <条件表达式>;then
    if <条件表达式>;then
        指令
    fi
fi
1.1.4 和之前条件表达式的关系

if条件语句相对于之前讲过的文件表达式[ -f “$file” ] && echo 1等价于下面的if语句

if [ -f “file”]; then
    echo 1
fi

if条件语句的单分支,如果形象的使用中文解释的话,相当于一个女孩这么对你说:

如果 <你有房>;那么
    我就嫁给你
果如

1.2 双分支

1.2.1 语法

if条件语句的单分支结构主体是“如果...那么...”,而if条件语句的双分支结构主体则为“如果...那么...否则...”。if条件语句的双分支结构语法为:

if<条件表达式>;then
    指令集1
else
    指令集2
fi
1.2.2 和之前条件表达式的关系

前文的文件测试表达式[ -f “file” ] && echo 1 || echo 0就相当于下面的双分支的if条件语句

if [ -f “file”]; then
    echo 1
else
    echo 0
fi

同样的,if条件语句的双分支,如果形象的使用中文解释的话,相当于一个女孩这么对你说:

如果 <你有房>;那么
我就嫁给你
否则
    我再考虑一下
果如
1.2.3 逻辑流程图

1.3 多分支

if条件语句多分支结构主体为“如果...,那么...,否则如果...,那么... 否则如果...,那么...,否则”

3.1 语法

if条件语句多分支语法为:

if<条件表达式>;then
    指令集1
elif <条件表达式>;then
    指令集2
else
    指令集3
fi

if条件语句的多分支,如果形象的使用中文解释的话,相当于一个女孩这么对你说:

如果 <你有房>;那么
    我就嫁给你
或者如果 <你爸有背景>;那么
    我也可以嫁给你
或者如果 <你很努力很吃苦>;那么
    我们可以先谈谈男女朋友
否则
    再见
果如
1.3.2 逻辑流程图

1.5 案例实操

1.5.1 判断nginx是否活着,如果没有活着就打印“邮件报警”(判断依据:curl/wget访问url)
1.5.2 利用自己编译的nginx,写一个nginx的启动脚本,需求如下:
  1. 类似于/etc/init.d/nginxd {start|stop|restart}
  2. 使用systemctl实现开机自启动管理

分析:
# 编译nginx
# 如果参数是start,则执行start的启动方式(/application/nginx/sbin/nginx)
# 如果参数是stop,则执行stop的关闭方式(/application/nginx/sbin/nginx –s stop)
# 如果stop的时候,没有进程,则输出一句话,"nginx 处于关闭状态"
# 如果是restart,则先执行stop,再执行start

[root@shell-project~]# cat /etc/init.d/nginxd
#!/bin/bash

# 定义变量
count=`netstat -lntup|grep nginx|wc -l`

#定义函数
function nginx_start(){
    if [ $count -gt 0 ];then
        echo 'nginx已经处于启动状态'
    else
        /application/nginx/sbin/nginx
        echo 'nginx启动成功'
    fi
}
function nginx_stop(){
    if [ $count -eq 0 ];then
        echo 'nginx已经处于关闭状态'
    else
        /application/nginx/sbin/nginx -s stop
        echo 'nginx已关闭'
    fi
}
# 如果参数是start,则执行start的启动方式(/application/nginx/sbin/nginx)
if [ "$1" = "start" ];then
    nginx_start
# 如果参数是stop,则执行stop的关闭方式(/application/nginx/sbin/nginx –s stop)
# 如果stop的时候,没有进程,则输出一句话,"nginx 处于关闭状态"
elif [ "$1" = "stop" ];then
    nginx_stop
# 如果是restart,则先执行stop,再执行start
elif [ "$1" = "restart" ];then
    nginx_stop
    sleep 2
    nginx_start
    echo 'nginx重启成功'
else
    echo '参数错误,正确的参数是{start|stop|restart}'
fi
[root@shell-project~]# 
[root@shell-project ~]# cat /usr/lib/systemd/system/nginx_wenjuan.service
[Unit]
Description=nginx service
After=nginx_wenjuan.target

[Service]
Type=forking
ExecStart=/etc/init.d/nginxd start
ExecReload=/etc/init.d/nginxd restart
ExecStop=/etc/init.d/nginxd stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target
[root@shell-project ~]#
[root@shell-project ~]# chmod +x /etc/init.d/nginxd

[root@shell-project ~]# systemctl start nginx_wenjuan.service
[root@shell-project /application]# systemctl status nginx_wenjuan
● nginx_wenjuan.service - nginx service
   Loaded: loaded (/usr/lib/systemd/system/nginx_wenjuan.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-07-18 00:27:52 CST; 2s ago
  Process: 11715 ExecStop=/etc/init.d/nginxd stop (code=exited, status=0/SUCCESS)
  Process: 11724 ExecStart=/etc/init.d/nginxd start (code=exited, status=0/SUCCESS)
 Main PID: 11730 (nginx)
   CGroup: /system.slice/nginx_wenjuan.service
           ├─11730 nginx: master process /application/nginx-1.16.0/sbin/nginx
           └─11731 nginx: worker process

Jul 18 00:27:52 shell-project systemd[1]: Stopped nginx service.
Jul 18 00:27:52 shell-project systemd[1]: Starting nginx service...
Jul 18 00:27:52 shell-project nginxd[11724]: nginx启动成功
Jul 18 00:27:52 shell-project systemd[1]: Started nginx service.
[root@shell-project /application]#

相关文章

  • day66-shell编程之-if条件语句

    1、 if条件语句 if条件语句,简单来说,其语义类似于汉语中的“如果...那么...”。if语句是Linux运维...

  • 前嗅ForeSpider脚本教程:基本语句

    今天,小编主要为大家介绍一下:前嗅ForeSpider脚本中的基本语句。内容包括:顺序语句,条件语句,循环语句,开...

  • Java流程控制2

    条件语句 if条件语句,switch多分支语句 if条件语句总 if条件句中又分为:if条件语句,if…else,...

  • Javascript 基础:语句

    1.条件语句 if(条件){语句}if(条件){语句1}else{语句2}if(条件){语句1}else if(条...

  • 语句

    条件语句 if (条件){语句1}else{语句2} if (条件){语句1}else if(条件2){语句2}e...

  • 07-Go语言条件语句

    if条件语句 if条件语句三种格式 if条件语句结构特点 switch条件语句 语句格式 switch语句注意点

  • 2018-12-11

    流程控制 流程控制语句:--条件判断语句--条件分支语句--循环语句 条件判断语句(if语句) 语法:if(条件表...

  • JavaScript(第三天)—爱创课堂专业前端培训

    一、条件语句 条件语句格式一: if(条件表达式){ 条件表达式成立执行的语句; } 条件语句格式二: if(条件...

  • 条件判断语句、多重条件判断语句

    条件判断语句 多重条件判断语句 if语句语法三:if(条件表达式){语句...}else if(条件表达式){语句...

  • 流程控制

    条件语句 if条件语句 *if条件语句主要用于告知程序当某一个条件成立时,须执行满足该条件的相关语句,if条件语句...

网友评论

      本文标题:day66-shell编程之-if条件语句

      本文链接:https://www.haomeiwen.com/subject/gcfdlctx.html