重击案声明

重击 case 当您有多种选择时,通常使用statement来简化复杂的条件。 使用 case 声明而不是嵌套 if 语句将帮助您使bash脚本更具可读性且易于维护。

重击 case 语句与Javascript或C具有相似的概念 switch 声明。 主要区别在于与C不同 switch 声明,重击 case 语句找到一个并执行与该模式关联的语句后,就不会继续搜索模式匹配。

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

case 语句语法#

重击 case 语句采用以下形式:

case EXPRESSION in

  PATTERN_1)
    STATEMENTS
    ;;

  PATTERN_2)
    STATEMENTS
    ;;

  PATTERN_N)
    STATEMENTS
    ;;

  *)
    STATEMENTS
    ;;
esac
  • case 语句以 case 关键字,然后是case表达式和 in 关键词。 该语句以 esac 关键词。
  • 您可以使用由 | 操作员。 的 ) 操作符终止模式列表。
  • 模式可以具有特殊字符。
  • 模式及其相关命令称为子句。
  • 每个子句必须以 ;;
  • 执行与匹配表达式的第一个模式相对应的命令。
  • 通常使用通配符星号(*)作为定义默认大小写的最终模式。 此模式将始终匹配。
  • 如果没有匹配的模式,则返回状态为零。 否则,返回状态是已执行命令的退出状态。

案例陈述示例#

这是使用 case bash脚本中的语句,该语句将打印给定国家/地区的官方语言:

language.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

该脚本将要求您输入一个国家。 例如,如果您输入“立陶宛”,它将与第一个模式匹配,并且 echo 该子句中的命令将被执行。

该脚本将输出以下输出:

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

如果您输入的国家/地区与默认通配符星号符号之外的其他任何模式均不匹配,则可以说是阿根廷,脚本将执行 echo 默认子句中的命令。

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

结论#

现在,您应该对如何编写bash有了很好的了解 case 陈述。 它们通常用于从命令行将参数传递给Shell脚本。 例如,初始化脚本正在使用 case 用于启动,停止或重新启动服务的语句。

如果您有任何疑问或反馈,请随时发表评论。

bash终端

Sidebar