Skip to main content
 首页 » 编程设计

介绍Bash Case 语句

2022年07月19日131cmt

介绍Bash Case 语句

本文介绍bash中case语句的语法。case语句通常用于简化多种不同选择的复杂条件场景,使用case代替if使得脚本代码更易读、易维护。

case语句与C语言、javasc中的switch语句类似。与C不同的是,一旦Bash中case语句匹配了一个条件并执行语句,则不再继续搜索后续匹配条件,相当于自动增加了break语句。

1. case语句语法

语法结构如下:

case EXPRESSION in 
 
  PATTERN_1) 
    STATEMENTS 
    ;; 
 
  PATTERN_2) 
    STATEMENTS 
    ;; 
 
  PATTERN_N) 
    STATEMENTS 
    ;; 
 
  *) 
    STATEMENTS 
    ;; 
esac 
  • 每个case语句以case关键字开头,后面跟上评估表达式和in关键字。最后以esac关键字结束。

  • 可以使用多个模式,使用 | 分隔符进行分割,)操作符表示模式列表结束。

  • 模式及其相关命令称为子句,每个子句比喻使用;;符号作为结束符。

  • 第一个匹配的模式对应命令被执行。

  • 通常习惯使用通配符,星号*作为缺省情况,该模式总是匹配。

  • 没有模式匹配时,返回状态为0。否则返会状态是执行命令的退出状态。

2. 示例

下面示例在bash脚本中使用case语句,打印给定国家的官方语言:

#!/bin/bash 
 
echo -n "enter the name of a country: " 
read country 
 
echo -n "the official language of $country is " 
 
case $country in  
    chinese)  
        echo -n "Chinese";; 
    japanese) 
        echo -n "Japanese";; 
    uk) 
        echo -n "English";; 
    *) 
    echo -n "unknown";; 
esac 
 
echo -e '\n' 
 

保持脚本为languages.sh并执行:

bash languages.sh 

脚本程序首先提示输入国家,如果输入uk,则匹配第三个模式,则对应echo命令被执行。脚本输出为:

enter the name of a country: uk 
the official language of uk is English 

如果你输入不匹配的国家,则缺省子句被执行:

enter the name of a country: usa 
the official language of usa is unknown 

3. 总结

现在大概应该理解了bash中case语句了吧。通常脚本中用于检验命令行传入的参数。如不同参数表示开始、停止或重启服务。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/108604978