Shell脚本case in esac分支语句应用
记录:434
场景:Shell脚本case in esac分支语句应用。
版本:CentOS Linux release 7.9.2009。
1.case in esac格式
格式:
case 值 in
模式1)
expression
;;
模式2)
expression
;;
模式n)
expression
;;
esac
解析:case是开始语句,esac是结束语句,;;表示分支结束。in 模式n)表示匹配分支。
2.使用case in esac
2.1脚本
脚本名称:b2023052811.sh
脚本内容:
#!/bin/bash
echo "请输入字符串日期(格式:yyyymmdd):"
read day_str
# date命令获取星期索引号,0是星期日,1-6是星期一到星期六
week_index=`date -d ${day_str} +%w`
case ${week_index} in
0)
echo "日期: ${day_str},是星期日."
;;
1)
echo "日期: ${day_str},是星期一."
;;
2)
echo "日期: ${day_str},是星期二."
;;
3)
echo "日期: ${day_str},是星期三."
;;
4)
echo "日期: ${day_str},是星期四."
;;
5)
echo "日期: ${day_str},是星期五."
;;
6)
echo "日期: ${day_str},是星期六."
;;
*)
echo "输入信息不正确."
;;
esac
2.2执行与输出
执行命令:bash b2023052811.sh
执行结果:
[root@hadoop211 tutorial]# bash b2023052811.sh
请输入字符串日期(格式:yyyymmdd):
20230527
日期: 20230527,是星期六.
[root@hadoop211 tutorial]# bash b2023052811.sh
请输入字符串日期(格式:yyyymmdd):
20230528
日期: 20230528,是星期日.
3.使用case in esac
3.1脚本
脚本名称:b2023052812.sh
脚本内容:
#!/bin/bash
echo "请输入城市名称:"
read city_name
case ${city_name} in
"杭州"|"宁波"|"绍兴")
echo "${city_name},是浙江省的城市."
;;
"苏州"|"无锡"|"常州")
echo "${city_name},是江苏省的城市."
;;
*)
echo "${city_name},其它信息,暂不支持."
;;
esac
3.2执行与输出
执行命令:bash b2023052812.sh
执行结果:
[root@hadoop211 tutorial]# bash b2023052812.sh
请输入城市名称:
宁波
宁波,是浙江省的城市.
[root@hadoop211 tutorial]# bash b2023052812.sh
请输入城市名称:
苏州
苏州,是江苏省的城市.
[root@hadoop211 tutorial]# bash b2023052812.sh
请输入城市名称:
上海
上海,其它信息,暂不支持.
4.使用case in esac和while组合
4.1脚本
脚本名称:b2023052813.sh
脚本内容:
#!/bin/bash
while true
do
stop_flag=false
echo '请根据偏好输入技术框架名称,(如需结束体验,请输入EOF)'
read tech
case ${tech} in
Hadoop)
echo "The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing."
;;
Spark)
echo "pache Spark™ is a multi-language engine for executing data engineering, data science, and machine learning on single-node machines or clusters."
;;
Hive)
echo "The Apache Hive is a distributed, fault-tolerant data warehouse system that enables analytics at a massive scale and facilitates reading, writing, and managing petabytes of data residing in distributed storage using SQL"
;;
Flink)
echo "Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams"
;;
DolphinScheduler)
echo 'Apache DolphinScheduler is the modern data workflow orchestration platform with powerful user interface, dedicated to solving complex task dependencies in the data pipeline and providing various types of jobs available `out of the box`.'
;;
EOF)
stop_flag=true
echo "接收到结束字符:${tech},结束本次体验."
;;
*)
echo "暂不支持该项技术."
;;
esac
#取字符串变量时,使用$取值再比对
if [[ ${stop_flag} = true ]];then
break
fi
done
4.2执行与输出
执行命令:bash b2023052813.sh
执行结果:
[root@hadoop211 tutorial]# bash b2023052813.sh
请根据偏好输入技术框架名称,(如需结束体验,请输入EOF)
Hadoop
The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing.
请根据偏好输入技术框架名称,(如需结束体验,请输入EOF)
C++
暂不支持该项技术.
请根据偏好输入技术框架名称,(如需结束体验,请输入EOF)
EOF
接收到结束字符:EOF,结束本次体验.
以上,感谢。
2023年5月28日
还没有评论,来说两句吧...