12-shell流程控制-if判断语句-《shell脚本》

admin 2025-11-06 14:41:06 系统网络 来源:ZONE.CI 全球网 0 阅读模式
  • 一、if介绍
  • 二、单if语法
  • 三、if…else语句
  • 四、if…elif…else
  • 五、练习案例
  • 六、if嵌套if
    • 6.1、使用if嵌套if的方式判断两个整数的关系
    • 6.2、写一个nginx安装初始化脚本
  • 七、if高级用法
    • 7.1、条件符号使用双圆括号,可以在条件中植入数学表达式 if (())
    • 7.2、使用双方括号,可以在条件中使用通配符
  • 八、简写if
  • 九、课后练习

    一、if介绍

    如何写一个高可用性的脚本,赋予脚本智能化,赋予脚本执行逻辑。比如nginx安装脚本中

    • configure执行成功在执行make,
    • make执行成功在执行make install
    • 上一步错误就不需要执行后面的代码了。

    answer: 加入判断只要你想在代码中判断一下的时候就第一时间想到if就行了,适用于99%的语言。当我们在写程序的时候,时常对上一步执行是否成功如何判断苦恼,当我们今天学习了if就可以解决你的苦恼。if语句在我们程序中就是用来做判断的,以后大家不管学习什么语言,以后只要涉及到判断的部分,大家就可以直接拿if来使用,不同的语言之间的if只是语法不同,原理是相同的。

    二、单if语法

    适用范围:只需要一步判断,条件返回真干什么。语句格式

    1. if [ condition ] #condition 值为true or false
    2. then #条件为真的时候执行
    3. commands #代码块 一行或者多行代码
    4. fi #语句的结束

    12-shell流程控制-if判断语句 - 图1该语句翻译成汉语大意如下:

    1. 假如 条件为真
    2. 那么
    3. 执行commands代码块
    4. 结束

    通过一段代码来演示一下吧,判断 当前用户是不是root,如果不是那么返回”ERROR: need to be root so that!“

    1. #!/bin/bash
    2. #Author: www.zutuanxue.com
    3. #Created Time:
    4. #Script Description:
    5. if [ $USER != 'root' ]
    6. then
    7. echo "ERROR: need to be root so that"
    8. exit 1
    9. fi

    三、if…else语句

    适用范围==:两步判断,条件为真干什么,条件为假干什么。

    1. if [ condition ]
    2. then 条件为真
    3. commands1 真 要执行代码块
    4. else 条件为假
    5. commands2 假 要执行的代码块
    6. fi 结束

    12-shell流程控制-if判断语句 - 图2该语句翻译成汉语大意如下:

    1. 假如条件为真
    2. 那么
    3. 执行commands1代码块
    4. 否则
    5. 执行commands2代码块
    6. 结束

    通过一段代码演示一下吧,判断当前登录用户是管理员还是普通用户,如果是管理员输出”hey admin“ 如果是普通用户输出”hey guest“

    1. #!/bin/bash
    2. #Author:www.zutuanxue.com
    3. #Created Time:
    4. #Script Description:
    5. if [ $USER == 'root' ]
    6. then
    7. echo "hey admin"
    8. else
    9. echo "hey guest"
    10. fi

    四、if…elif…else

    适用范围:多于两个以上的判断结果,也就是多于一个以上的判断条件。

    1. if [ condition 1] 满足第一个条件
    2. then 真
    3. command1 执行command1代码块
    4. elif [ condition 2] 满足第二个条件
    5. then 真
    6. commands2 执行command2代码块
    7. .......
    8. else 如果条件都不满足
    9. commandsX 执行commandX代码块
    10. fi 结束判断

    12-shell流程控制-if判断语句 - 图3该语句翻译成汉语大意如下:

    1. 假如 条件1 为真
    2. 那么
    3. 执行代码块1
    4. 假如 条件2 为真
    5. 那么
    6. 执行代码块2
    7. 以此类推的N个条件及对应的执行代码块
    8. 否则 【以上所有条件中没有一个满足的】
    9. 执行代码块X
    10. 结束

    通过一段代码演示一下吧,通过一个脚本,判断两个整数的关系案例需求判断内存的使用率60以下 ok60以上 黄色警告70以上 橙色严重警告80以上 红色警告案例思考

    • 内存使用率获得方式– 手动给出– 通过内存查看命令运算得出

    案例代码

    1. #!/bin/bash
    2. #1、条件
    3. #判断内存的使用率
    4. #60以下 ok 绿色 32m
    5. #60以上 黄色警告 33m
    6. #70以上 粉色严重警告 35m
    7. #80以上 红色警告 31m
    8. #2、算法
    9. #收集内存使用率 $1
    10. #
    11. #多条件判断
    12. if [ $1 -gt 80 ]
    13. then
    14. echo -e "\033[31m 警告 \033[0m"
    15. elif [ $1 -gt 70 ]
    16. then
    17. echo -e "\033[35m 警告 \033[0m"
    18. elif [ $1 -gt 60 ]
    19. then
    20. echo -e "\033[33m 警告 \033[0m"
    21. else
    22. echo -e "\033[32m OK \033[0m"
    23. fi
    24. #注意事项
    25. #多条件判断 需要从最严格开始判断 否者 后面的就不会生效
    26. #如果你第一个判断的是60以上,那么 70 80 都符合第一个条件。所以后面的判断70 80 就没有任何意义

    五、练习案例

    案例需求比较两个整数的关系案例思考

    • 两个整数有几种关系– 大于– 等于– 小于

    案例代码

    1. #!/bin/bash
    2. #Author: www.zutuanxue.com
    3. #Created Time:
    4. #Script Description:
    5. if [ $1 -gt $2 ]
    6. then
    7. echo "$1 > $2"
    8. elif [ $1 -eq $2 ]
    9. then
    10. echo "$1 = $2"
    11. else
    12. echo "$1 < $2"
    13. fi

    六、if嵌套if

    当有多步判断的时候,可以使用if嵌套1、多步判断 类似于多条件if2、依赖执行的环境 configure->make->make install

    6.1、使用if嵌套if的方式判断两个整数的关系

    1. #!/bin/bash
    2. #Author:
    3. #Created Time:
    4. #Script Description:
    5. if [ $1 -ne $2 ]
    6. then
    7. if [ $1 -gt $2 ]
    8. then
    9. echo " $1 > $2 "
    10. else
    11. echo " $1 < $2 "
    12. fi
    13. else
    14. echo " $1 = $2 "
    15. fi

    6.2、写一个nginx安装初始化脚本

    案例需求写一个nginx业务初始化脚本,完成nginx软件自动安装。案例思考

    • 1、nginx软件包获得方式
    • 2、nginx安装流程
    • 3、nginx安装依赖关系

    案例步骤

    • 1、软件包下载
    • 2、软件包解压
    • 3、安装依赖包
    • 4、安装nginx
    • 5、返回结果

    案例代码

    1. #!/bin/bash
    2. #Author: www.zutuanxue.com
    3. #Created Time:
    4. #Script Description: nginx aoto install script
    5. source_pkg=nginx-1.19.2.tar.gz
    6. #1、软件包下载
    7. wget http://nginx.org/download/$source_pkg
    8. #2、解压
    9. if [ -f $source_pkg ];then
    10. tar xf $source_pkg && cd nginx-1.19.2
    11. else
    12. echo "not found $source_pkg"
    13. exit 1
    14. fi
    15. #3、安装依赖包
    16. if ! ( yum -y install pcre-devel zlib-devel );then
    17. echo "yum: install soft error"
    18. exit 1
    19. fi
    20. #4、配置
    21. #判断配置语句执行结果
    22. if ./configure 1>/dev/null
    23. then
    24. #判断make执行结果
    25. if make 1>/dev/null
    26. then
    27. #判断make install安装结果
    28. if make install 1>/dev/null
    29. then
    30. echo "nginx 安装成功"
    31. else
    32. echo "nginx 安装失败"
    33. exit 1
    34. fi
    35. else
    36. echo "make fail"
    37. exit 1
    38. fi
    39. else
    40. echo "configure fail"
    41. exit 1
    42. fi
    43. #./configure
    44. #if [ $? -eq 0 ];then
    45. #注意: 1>/dev/null
    46. 1 标准输出
    47. 2 标准错误输出

    七、if高级用法

    7.1、条件符号使用双圆括号,可以在条件中植入数学表达式 if (())

    #!/bin/bash#Author:#Created Time:#Script Description: if (( (5+5-5)*5/5 > 10 )) then echo "yes"else echo "no"fi

    7.2、使用双方括号,可以在条件中使用通配符

    通过代码看下 ,为字符串提供高级功能,模式匹配 r 匹配r开头的字符串`#!/bin/bash#Author: #Created Time: #Script Description: for var in ab ac rx bx rvv vt do if [[ “$var” == r ]] then echo “$var” fi done`

    八、简写if

    省去了关键字,条件为真采用&&符号链接命令块,条件为假采用||链接命令块简写if一般用在简单的判断中if [ ! -d /tmp/baism ] then mkdir /tmp/baism fi 可以简写为 [ ! -d /tmp/baism ] && mkdir /tmp/baism if [ $USER == 'root' ] then echo "hello root"else echo "hello guest"fi 可以简写 [ $USER == 'root' ]&&echo "hello root" || echo "hello guest"

    九、课后练习

    1. 1、计算机状态监控。能ping通就算up,不通为down,需要考虑网络延迟问题造成的假报警问题。
    2. #1、分别ping 取三个值 判断三个值的结果
    3. 1.1 ping 3次 并取值
    4. 1.2 三次结果与运算 得出结论
    5. 2、监控一个服务端口,判断其状态
    6. 3、打印内存使用率脚本,打印内存使用率、swap使用率、buff&cache使用量
    7. 4、打印磁盘使用率脚本,对本机的磁盘使用率统计并打印结果
    8. 使用率小于80,绿色输出
    9. 使用率小于90,大于80,黄色输出
    10. 使用率小于95,大于90,红色输出
    11. 5、网卡发送和就收数据量监控,按秒统计。
    12. 6、URL监控脚本,对某个URL进行监控,返回值为200则代表成功访问。
    13. 7、写一个mysql binlog备份脚本,要求每天0点0分,计算机自动备份前一天的binlog日志,打包后发送给备份服务器。
    14. 8、闰年判断
    15. 9、判断/tmp/run目录是否存在,如果不存在就建立,如果存在就删除目录里所有文件
    16. 10、写一个nginx安装脚本
    01-shell脚本介绍-《shell脚本》 系统网络

    01-shell脚本介绍-《shell脚本》

    一、shell脚本是什么二、为什么要学shell,而不是其他计算机语言三、学习这门课程的优势四、学了能干什么五、学习什么内容六、学习的技巧七、成长路径八、学习环
    评论:0   参与:  24