📜  Bash案例声明

📅  最后修改于: 2020-12-29 06:07:40             🧑  作者: Mango

重击案

在本主题中,我们将讨论case语句的基础以及如何在Bash脚本中使用它们。

Bash case语句是具有许多ELIF元素的IF-THEN-ELSE的最简单形式。使用case语句使我们的bash脚本更具可读性,更易于维护。这些通常用于简化具有多种不同选择的复杂条件。

Bash case语句遵循与Javascript或C switch语句类似的逻辑。略有不同,如下所示:

  • Bash case语句只接受一次值,然后多次测试该值。一旦找到模式并执行与它链接的语句,它将停止搜索模式,这与C switch语句几乎相反。

案例陈述句法

bash case语句的语法如下:

case expression in
    pattern_1)
        statements
        ;;
    pattern_2)
        statements
        ;;
    pattern_3|pattern_4|pattern_5)
        statements
        ;;
    pattern-n)
        statements
        ;;
    *)
        statements
        ;;
esac

bash case语句有一些要点:

  • bash中的每个case语句均以“ case”关键字开头,后跟case表达式和“ in”关键字。用'esac'关键字关闭case语句。
  • 我们可以应用以|分隔的多个模式运算符。 )运算符指示模式列表的终止。
  • 包含语句的模式称为子句,并且必须以双分号(;;)终止。
  • 星号(*)用作定义默认大小写的最终模式。当用作最后一种情况时,它用作默认情况。

这个怎么运作

首先,case语句扩展表达式并尝试与每个包含的模式匹配。当找到匹配项时,将执行所有链接的语句,直到双分号(;;)为止。在第一个匹配项之后,case以最后执行的语句的退出状态终止。

如果没有匹配的模式,则案例的退出状态为零。否则,返回状态是已执行语句的退出状态。

如果使用默认的星号模式,则在没有匹配模式的情况下将执行它。

让我们尝试通过一些示例来了解这种机制:

例子1

在此示例中,我们定义了一个简单的场景来演示case语句的用法。

Bash脚本

#!/bin/bash

echo "Do you know Java Programming?"
read -p "Yes/No? :" Answer
case $Answer in
    Yes|yes|y|Y)
        echo "That's amazing."
        echo
        ;;
    No|no|N|n)
        echo "It's easy. Let's start learning from javatpoint."
        ;;
esac

输出量

例子2

在此示例中,我们定义了一个组合方案,其中还存在一个默认情况,即找不到先前匹配的大小写。

Bash脚本

#!/bin/bash

echo "Which Operating System are you using?"
echo "Windows, Android, Chrome, Linux, Others?"
read -p "Type your OS Name:" OS

case $OS in
    Windows|windows)
        echo "That's common. You should try something new."
        echo
        ;;
    Android|android)
        echo "This is my favorite. It has lots of applications."
        echo
        ;;
    Chrome|chrome)
        echo "Cool!!! It's for pro users. Amazing Choice."
        echo
        ;;
    Linux|linux)
        echo "You might be serious about security!!"
        echo
        ;;
    *)
        echo "Sounds interesting. I will try that."
        echo
        ;;
esac

输出量

我们使用三个不同的输入运行了脚本,请检查以下输出:

结论