Bash Case说明

评论 0 浏览 0 2019-03-01

当你有多个不同的选择时,bash的case语句一般用于简化复杂的条件。使用case语句而不是嵌套的if语句会使你的bash脚本更易读,更容易维护。

Bash case语句与Javascript或C switch语句有类似的概念。主要的区别是,与C switch语句不同,Bash case语句在找到模式匹配并执行了与该模式相关的语句后,就不再继续搜索。

在本教程中,我们将介绍Bash case语句的基本知识,并向你展示如何在你的shell脚本中使用它。

case 语句句法

Bash case 语句的形式如下。

case EXPRESSION in

  PATTERN_1)
    STATEMENTS
    ;;

  PATTERN_2)
    STATEMENTS
    ;;

  PATTERN_N)
    STATEMENTS
    ;;

  *)
    STATEMENTS
    ;;
esac
  • 每个case语句以case关键字开始,接着是case表达式和in关键字。语句以esac关键字结束。
  • 你可以使用由|操作符分隔的多个模式。)操作符可以终止一个模式列表。
  • 一个模式可以有特殊的字符
  • 一个模式及其相关的命令被称为一个子句。
  • 每个子句都必须以;;结尾。
  • 与第一个匹配表达式的模式相对应的命令将被执行。
  • 使用通配符星号(*)作为最后的模式来定义默认情况,是一种常见的做法。这个模式将始终匹配。
  • 如果没有匹配的模式,返回状态为0。否则,返回状态是所执行命令的退出状态

个案陈述实例

下面是一个在bash脚本中使用case语句的例子,它将打印一个给定国家的官方语言。

languages.sh
#!/bin/bash

echo -n "Enter the name of a country: "
read COUNTRY

echo -n "The official language of $COUNTRY is "

case $COUNTRY in

  Lithuania)
    echo -n "Lithuanian"
    ;;

  Romania | Moldova)
    echo -n "Romanian"
    ;;

  Italy | "San Marino" | Switzerland | "Vatican City")
    echo -n "Italian"
    ;;

  *)
    echo -n "unknown"
    ;;
esac

将自定义脚本保存为文件,并从命令行中运行它。

bash languages.sh

该脚本将要求你输入一个国家。例如,如果你输入 "Lithuania",它将匹配第一个模式,该子句中的echo命令将被执行。

该脚本将打印出以下输出。

输出

Enter the name of a country: Lithuania
The official language of Lithuania is Lithuanian

如果你输入一个国家,除了默认的通配符星号之外,不匹配任何其他模式,比方说Argentina,脚本会在默认子句里面执行echo命令

输出

Enter the name of a country: Argentina
The official language of Argentina is unknown

总结

现在你应该对如何编写bash case语句有了一定的了解。它们通常被用来从命令行向shell脚本传递参数。例如,init脚本就是用case语句来启动、停止或重新启动服务。

如果你有任何问题或反馈意见,请随时留言。

最后更新2023-03-14
0 个评论
标签