Shell脚本初学者指南4:条件和IF-THEN语句

我们在关于shell脚本的指南中已经涵盖了足够多的基础知识,您应该可以放心地进行实验。在本周的这一期中,我们将讨论一些更有趣的内容,比如条件和“IF-THEN”语句。

条件是什么?

在日常语言中,我们说条件是发生某事必须满足的条件。要让我的笔记本电脑能够连接到互联网,有几个条件必须满足,比如有ISP、调制解调器和/或路由器处于打开状态、我的笔记本电脑处于打开状态等等。这很简单,如果这些条件中的任何一个不能满足,结果-我的笔记本电脑就不会连接到互联网。

计算机领域的条件也有类似的作用。我们可以测试一个字符串是否与另一个字符串匹配,是否与另一个字符串不匹配,或者是否存在。类似地,我们可以测试数值参数,以确定一个参数是否大于、小于或等于另一个参数。要在满足测试条件后执行某些操作,我们使用“if-Then”语句。它们的格式非常简单。

IF语句

让我们运行一个快速的小测试脚本,好吗?

您会注意到,只有当该条件为真时,脚本才会执行以下命令。否则,“if”语句将退出。如果“if”语句后有任何命令,则它们将正常运行。为了说明这一点,我在上面的脚本末尾添加了下面一行代码:

以下是您可能希望尝试的其他一些数值运算符:

-eq:等于。 -ne:不等于。 -lt:小于。 -le:小于或等于。 -gt:大于。 -ge:大于或等于

测试字符串

现在,如果我们将脚本的第一行修改为:

然后条件将测试两者是否相等。不过,这里有个圈套!!使用等号(=)可以比较两个字符串,而不是数字。如果您希望比较数字,则需要使用“-eq”运算符,类似于我们上面使用“-gt”的方式。

现在,我们再做一个修改:

包含感叹号(!)。充当“非”修饰语。也就是说,它仅在两个字符串不匹配时运行以下命令。

下面是一些您可以使用的更多基于字符串的测试的列表:

字符串:仅使用参数本身来测试字符串是否不为空(NULL)或未以某种方式定义。 -n字符串:这将测试字符串是否不为空并且已定义。 -z字符串:这将测试字符串是否为空以及是否以这种方式定义

如果还有什么呢?

我承认,那个章节的标题绝对是个糟糕的双关语。好的,我们知道如果测试为真如何执行命令,但是如果我们想要执行另一个命令,如果它为假呢?通过在“If-Then”语句-“Else”语句中添加一个部分,我们可以很容易地将这两者放在一起!

让我们来组合一个简单的脚本。

所有东西都有适当的凹痕。如果仔细观察,您会注意到我们使用的是方括号([和]),而不是test命令。就我们的目的而言,它们在功能上是等效的,而且出于各种原因,您更有可能看到方括号,所以我们将从现在开始使用它们。

以下是输出将显示的内容:

就这么简单!

我现在该干啥?

既然您已经知道如何使用“if-Then-Else”语句,您就可以运行可以执行测试的脚本了。例如,您可以运行一个脚本,该脚本将计算文件的MD5散列,然后将其与您在文件中下载的散列进行比较,以查看它们是否匹配。

对于某些奖励,您可以创建一个脚本,该脚本有一个“for”循环,但是使用测试条件,而不是从列表文件…中读取行

在我们的Shell脚本初学者指南中,我们将介绍一些更有趣的部分。如果您错过了前面的课程,这里有一个快速列表供您查看:

Shell脚本编写的基础知识。 使用for循环。 更基本的命令。 Linux shell之间有什么不同? 如何使用基本正则表达式

如果您制作或使用过利用测试条件、IF-THEN-ELSE语句和“for”循环的脚本,请在下面的评论中与我们分享!

相关文章