个性化阅读
专注于IT技术分析

bash case语句

本文概述

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

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

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

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

case语句语法

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语句扩展表达式并尝试与每个包含的模式匹配。找到匹配项后,将执行所有链接的语句,直到双分号(;;)为止。在第一个匹配项之后,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 srcmini."
		;;
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

输出量

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

结论

在本主题中,我们通过示例了解了Bash Case语句的语法和用法。


赞(0)
未经允许不得转载:srcmini » bash case语句

评论 抢沙发

评论前必须登录!