2.3.3 嵌套实践
学习目标
这一节,我们从 基础知识、简单实践、小结 三个方面来学习。
基础知识
简介
这里的嵌套实践,与if语句的嵌套实践,基本一致,只不过组合的方式发生了一些变化。常见的组合样式如下:
case嵌套if语句
case "变量" in
"值1")
if [ 条件判断 ]
...
;;
...
esac
case嵌套case语句
case "变量" in
"值1")
case语句
...
esac
if嵌套case语句
if [ 条件判断 ]
then
case "变量名" in
"值1")
指令1;;
...
esac
else
...
fi
简单实践
案例需求
场景简介:
火车站安检
安检失败
- 携带违禁物品禁止进站
安检成功后进行火车票检查
- 允许登上上火车
- 禁止登上火车
实践1-case嵌套if语句
查看脚本内容
[root@localhost ~]# cat case_if.sh
#!/bin/bash
# 功能:case嵌套if语句实践
# 定制业务逻辑
read -p "是否携带违禁物品: " safe_check
# 业务逻辑定制
case "${safe_check}" in
"true")
echo -e "\e[31m不允许进入火车站\e[0m";;
"false")
read -p "火车票是否过期: " ticket_check
if [ ${ticket_check} == "true" ]
then
echo -e "\e[31m不允许登上火车站\e[0m"
else
echo -e "\e[31m允许登上火车站\e[0m"
fi;;
*)
echo -e "\e[31m再检查一遍\e[0m";;
esac
脚本执行效果
[root@localhost ~]# /bin/bash case_if.sh
是否携带违禁物品: true
不允许进入火车站
[root@localhost ~]# /bin/bash case_if.sh
是否携带违禁物品: false
火车票是否过期: true
不允许登上火车站
[root@localhost ~]# /bin/bash case_if.sh
是否携带违禁物品: false
火车票是否过期: false
允许登上火车站
[root@localhost ~]# /bin/bash case_if.sh
是否携带违禁物品: hah
再检查一遍
实践2-case嵌套case语句
查看脚本内容
[root@localhost ~]# cat case_case.sh
#!/bin/bash
# 功能:case嵌套case语句实践
# 定制业务逻辑
read -p "是否携带违禁物品: " safe_check
# 业务逻辑定制
case "${safe_check}" in
"true")
echo -e "\e[31m不允许进入火车站\e[0m";;
"false")
read -p "火车票是否过期: " ticket_check
case ${ticket_check} in
"true")
echo -e "\e[31m不允许登上火车站\e[0m";;
"false")
echo -e "\e[31m允许登上火车站\e[0m";;
*)
echo -e "\e[31m再检查一遍\e[0m";;
esac;;
*)
echo -e "\e[31m再检查一遍\e[0m";;
esac
实践3-if嵌套case语句
查看脚本内容
[root@localhost ~]# cat if_case.sh
#!/bin/bash
# 功能:if嵌套case语句实践
# 定制业务逻辑
read -p "是否携带违禁物品: " safe_check
# 业务逻辑定制
if [ "${safe_check}" == "true" ]
then
echo -e "\e[31m不允许进入火车站\e[0m"
elif [ "${safe_check}" == "false" ]
then
read -p "火车票是否过期: " ticket_check
case ${ticket_check} in
"true")
echo -e "\e[31m不允许登上火车站\e[0m";;
"false")
echo -e "\e[31m允许登上火车站\e[0m";;
*)
echo -e "\e[31m再检查一遍\e[0m";;
esac
else
echo -e "\e[31m再检查一遍\e[0m"
fi