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日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值