Shell脚本case in esac分支语句应用

分手后的思念是犯贱 2024-04-23 01:56 222阅读 0赞

记录:434

场景:Shell脚本case in esac分支语句应用。

版本:CentOS Linux release 7.9.2009。

1.case in esac格式

格式:

  1. case in
  2. 模式1)
  3. expression
  4. ;;
  5. 模式2)
  6. expression
  7. ;;
  8. 模式n)
  9. expression
  10. ;;
  11. esac

解析:case是开始语句,esac是结束语句,;;表示分支结束。in 模式n)表示匹配分支。

2.使用case in esac

2.1脚本

脚本名称:b2023052811.sh

脚本内容:

  1. #!/bin/bash
  2. echo "请输入字符串日期(格式:yyyymmdd):"
  3. read day_str
  4. # date命令获取星期索引号,0是星期日,1-6是星期一到星期六
  5. week_index=`date -d ${day_str} +%w`
  6. case ${week_index} in
  7. 0)
  8. echo "日期: ${day_str},是星期日."
  9. ;;
  10. 1)
  11. echo "日期: ${day_str},是星期一."
  12. ;;
  13. 2)
  14. echo "日期: ${day_str},是星期二."
  15. ;;
  16. 3)
  17. echo "日期: ${day_str},是星期三."
  18. ;;
  19. 4)
  20. echo "日期: ${day_str},是星期四."
  21. ;;
  22. 5)
  23. echo "日期: ${day_str},是星期五."
  24. ;;
  25. 6)
  26. echo "日期: ${day_str},是星期六."
  27. ;;
  28. *)
  29. echo "输入信息不正确."
  30. ;;
  31. esac

2.2执行与输出

执行命令:bash b2023052811.sh

执行结果:

  1. [root@hadoop211 tutorial]# bash b2023052811.sh
  2. 请输入字符串日期(格式:yyyymmdd):
  3. 20230527
  4. 日期: 20230527,是星期六.
  5. [root@hadoop211 tutorial]# bash b2023052811.sh
  6. 请输入字符串日期(格式:yyyymmdd):
  7. 20230528
  8. 日期: 20230528,是星期日.

3.使用case in esac

3.1脚本

脚本名称:b2023052812.sh

脚本内容:

  1. #!/bin/bash
  2. echo "请输入城市名称:"
  3. read city_name
  4. case ${city_name} in
  5. "杭州"|"宁波"|"绍兴")
  6. echo "${city_name},是浙江省的城市."
  7. ;;
  8. "苏州"|"无锡"|"常州")
  9. echo "${city_name},是江苏省的城市."
  10. ;;
  11. *)
  12. echo "${city_name},其它信息,暂不支持."
  13. ;;
  14. esac

3.2执行与输出

执行命令:bash b2023052812.sh

执行结果:

  1. [root@hadoop211 tutorial]# bash b2023052812.sh
  2. 请输入城市名称:
  3. 宁波
  4. 宁波,是浙江省的城市.
  5. [root@hadoop211 tutorial]# bash b2023052812.sh
  6. 请输入城市名称:
  7. 苏州
  8. 苏州,是江苏省的城市.
  9. [root@hadoop211 tutorial]# bash b2023052812.sh
  10. 请输入城市名称:
  11. 上海
  12. 上海,其它信息,暂不支持.

4.使用case in esac和while组合

4.1脚本

脚本名称:b2023052813.sh

脚本内容:

  1. #!/bin/bash
  2. while true
  3. do
  4. stop_flag=false
  5. echo '请根据偏好输入技术框架名称,(如需结束体验,请输入EOF)'
  6. read tech
  7. case ${tech} in
  8. Hadoop)
  9. echo "The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing."
  10. ;;
  11. Spark)
  12. echo "pache Spark™ is a multi-language engine for executing data engineering, data science, and machine learning on single-node machines or clusters."
  13. ;;
  14. Hive)
  15. 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"
  16. ;;
  17. Flink)
  18. echo "Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams"
  19. ;;
  20. DolphinScheduler)
  21. 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`.'
  22. ;;
  23. EOF)
  24. stop_flag=true
  25. echo "接收到结束字符:${tech},结束本次体验."
  26. ;;
  27. *)
  28. echo "暂不支持该项技术."
  29. ;;
  30. esac
  31. #取字符串变量时,使用$取值再比对
  32. if [[ ${stop_flag} = true ]];then
  33. break
  34. fi
  35. done

4.2执行与输出

执行命令:bash b2023052813.sh

执行结果:

  1. [root@hadoop211 tutorial]# bash b2023052813.sh
  2. 请根据偏好输入技术框架名称,(如需结束体验,请输入EOF)
  3. Hadoop
  4. The Apache Hadoop® project develops open-source software for reliable, scalable, distributed computing.
  5. 请根据偏好输入技术框架名称,(如需结束体验,请输入EOF)
  6. C++
  7. 暂不支持该项技术.
  8. 请根据偏好输入技术框架名称,(如需结束体验,请输入EOF)
  9. EOF
  10. 接收到结束字符:EOF,结束本次体验.

以上,感谢。

2023年5月28日

发表评论

表情:
评论列表 (有 0 条评论,222人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Shell case esac语句

    case … esac 与其他语言中的 switch … case 语句类似,是一种多分枝选择结构。 case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令...