shell脚本编程之case语句

         ~~~~~~~~         因为想要面对一个新的开始,一个人必须有梦想、有希望、有对未来的憧憬。如果没有这些,就不叫新的开始,而叫逃亡。 ​​​​
                                                                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                 ————玛丽亚·杜埃尼亚斯

case结构语句相当于多分支的if/elif/else条件句,但是它比之看起来更加的规范工整有美感,常用于实现系统服务启动脚本。

case语句结构

   case 变量值 in
   模式 1)
   命令序列1
   ;;
   模式 2)
   命令序列2
   ;;
   .......
*)
    默认命令序列
    Esac

case语句执行流程

shell脚本编程之case语句_第1张图片case执行流程:首先变量值与模式一进行比较,若取值相同则执行模式一后面的命令序列,直到遇见“;;”后跳转至esac结束分支;若与模式一步匹配则与模式二进行比较,匹配则执行模式二后面的命令序列,直到遇见“;;”后跳至esac结束分支;若找不到任何匹配项则执行默认模式“*”后的命令序列,直到遇见“;;”后结束分支。

注意:
case行尾必须为单词“in”,每一模式必须以右括号“)”结束。
双分号“;;”表示命令序列的结束。
模式字符串中,可以用方括号表示一个连续的范围,如[0-9];还可以用竖杠符号“|”表示或,如A|B。
最后“)”表示默认模式,其中相当于通配符。

应用示例

#!/bin/bash
read -p "请输入一个字符,并按Enter键确认:" KEY
case "$KEY" in
  [a-z]|[A-Z])
  echo "您输入的是字母: $KEY"
  ;;
  [0-9])
  echo "你输入的是数字: $KEY"
  ;;
  *)
  echo "您输入的是空格、功能键或其他控制字符!"
esac

case与if区别

1.case语句与if条件句的适用性
case语句比较适合变量值较少且为固定的数字或字符串集合情况(非不确定的内容,例如范围),如果变量的值是已知固定的start/stop/restart等元素,那么采用case语实现就比较适合
2.case语知与if语句的常见应用场景
case主要是写服务的启动脚本,一般情况下,传参不同且具有少量的字符串,其适用范围窄
if就是取值判断、比较、应用比case更广。几乎所有的case语句都可以用if条件语句实现
3.case语句的优势与特点
case语句就相当于多分支的if/elif/else语句,但case语句的优势是更规范、易读

相关文章:
shell脚本编程循环语句
linux之shell脚本基础
shell编程之条件判断语句
shell脚本中的函数及调试

你可能感兴趣的:(shell脚本,shell)