2.2.3 嵌套if实践
学习目标
这一节,我们从 基础知识、简单实践、小结 三个方面来学习。
基础知识
简介
一个if语句仅仅能够针对一个场景的多种情况。当我们面对多场景的条件判断的时候,一个if结构语句无法满足需求,这个时候,我们可以借助于嵌套if的结构语句来实现相应的效果。
注意:
如果是多个独立的、彼此没有关联的业务场景,可以使用不同的if语句即可
嵌套的if语句只能适用于彼此关联的业务场景
简单实践
案例需求
运维管理人员,通过监控平台获取站点的运行状态数据信息,当发现问题的时候,根据情况进行后续判断:
状况1: 问题类型
研发标识 - 交给开发团队
测试标识 - 交给测试团队
运维标识 - 交给运维团队
状况2: 问题级别
红灯 - 紧急故障
黄灯 - 严重故障
绿灯 - 一般故障
灰灯 - 未知故障,后续操作
脚本内容
[root@localhost ~]# cat monitor_operator_if.sh
#!/bin/bash
# 功能:定制监控异常的处理措施
# 版本:v0.1
# 作者:书记
# 联系:www.superopsmsb.com
# 定制普通变量
monitor_type=(研发 测试 运维)
error_level=(红灯 黄灯 绿灯 灰灯)
# 监控平台的信息提示
echo -e "\e[31m \t\t 欢迎使用监控处理平台"
echo -e "\e[32m-----------请选择问题类型-----------
1: 研发 2: 测试 3: 运维
----------------------------------\033[0m"
# 定制业务逻辑
read -p "请输入问题标识: " monitor_id
# 判断问题类型是否有效
if [ ${#monitor_type[@]} -lt ${monitor_id} ]
then
echo -e "\e[31m无效标识,请输入正确的问题标识\e[0m"
else
# 定制问题类型识别逻辑
if [ ${monitor_type[$monitor_id-1]} == "研发" ]
then
echo -e "\e[31m转交研发团队处理\e[0m"
elif [ ${monitor_type[$monitor_id-1]} == "测试" ]
then
echo -e "\e[31m转交测试团队处理\e[0m"
elif [ ${monitor_type[$monitor_id-1]} == "运维" ]
then
echo -e "\e[32m-----------请选择故障级别-----------"
echo " 1: 红灯 2: 黄灯 3: 绿灯 4: 灰灯"
echo -e "----------------------------------\033[0m"
read -p "请输入故障级别: " level_id
# 判断故障级别是否有效
if [ ${#error_level[@]} -lt ${level_id} ]
then
echo -e "\e[31m无效标识,请输入正确的故障级别\e[0m"
else
# 定制故障级别逻辑
if [ ${error_level[$level_id-1]} == "红灯" ]
then
echo -e "\e[31m请按照 紧急故障 性质进行处理\e[0m"
elif [ ${error_level[$level_id-1]} == "黄灯" ]
then
echo -e "\e[31m请按照 严重故障 性质进行处理\e[0m"
elif [ ${error_level[$level_id-1]} == "绿灯" ]
then
echo -e "\e[31m请按照 一般故障 性质进行处理\e[0m"
elif [ ${error_level[$level_id-1]} == "灰灯" ]
then
echo -e "\e[31m请按照 未知故障 性质进行处理\e[0m"
fi
fi
fi
fi
脚本执行效果
[root@localhost ~]# /bin/bash monitor_operator_if.sh
欢迎使用监控处理平台
-----------请选择问题类型-----------
1: 研发 2: 测试 3: 运维
----------------------------------
请输入问题标识: 4
无效标识,请输入正确的问题标识
[root@localhost ~]# /bin/bash monitor_operator_if.sh
欢迎使用监控处理平台
-----------请选择问题类型-----------
1: 研发 2: 测试 3: 运维
----------------------------------
请输入问题标识: 1
转交研发团队处理
[root@localhost ~]# /bin/bash monitor_operator_if.sh
欢迎使用监控处理平台
-----------请选择问题类型-----------
1: 研发 2: 测试 3: 运维
----------------------------------
请输入问题标识: 3
-----------请选择故障级别-----------
1: 红灯 2: 黄灯 3: 绿灯 4: 灰灯
----------------------------------
请输入故障级别: 1
请按照 紧急故障 性质进行处理
[root@localhost ~]# /bin/bash monitor_operator_if.sh
欢迎使用监控处理平台
-----------请选择问题类型-----------
1: 研发 2: 测试 3: 运维
----------------------------------
请输入问题标识: 3
-----------请选择故障级别-----------
1: 红灯 2: 黄灯 3: 绿灯 4: 灰灯
----------------------------------
请输入故障级别: 6
无效标识,请输入正确的故障级别
小结