Shell脚本if-else语句完全指南:从基础语法到实例应用

在我们之前关于Shell脚本中的数组的教程后,让我们来了解一下如何在Shell脚本中使用if-else语句。

条件编程是任何编程语言的重要组成部分,因为执行程序中的每个语句,往往并不可取。我们需要一种有条件执行语句的方法,而Shell脚本中的if-else正好可以解决这种情况。

脚本中的条件设置

条件编程中最重要的部分之一就是if-else语句。通过if-else语句,您可以在代码中执行条件判断语句。

当我们希望评估一个条件,然后根据结果决定在两个或多个语句集中执行其中一个时,在Shell脚本中我们使用if-else。这本质上允许我们选择对条件表达式评估结果的响应。

在Shell脚本中,if-else语句是如何工作的?

现在我们知道什么是if-else语句以及为什么它对于任何程序员都很重要,无论他们的领域是什么。要理解Shell脚本中的if-else,我们需要分解条件语句的工作方式。

让我们来看一下if-else条件块的语法:

if [条件]
then
   语句1
else
   语句2
fi

在这里我们有四个关键字,它们分别是:if(如果)、then(那么)、else(否则)和fi(结束)。

  1. 关键词”if”后面跟着一个条件。这个条件被评估以决定处理器将执行哪个语句。如果条件评估为真(TRUE),处理器将执行关键字”then”后面的语句(在语法中被称为”语句1″)。在条件评估为假(FALSE)的情况下,处理器将执行关键字”else”后面的语句(在函数语法中表示为”语句2″)。

需要记住的一件重要事情是,就像C编程一样,Shell脚本也是区分大小写的。因此,在使用代码中的关键字时,你需要小心。

如何在Shell脚本中使用if-else条件语句

很容易看到语句的语法并相信你知道如何使用它。但是,通过实例来理解语句总是更好的选择,因为它们帮助你理解语句的不同方面所扮演的角色。

这里有一些有用的Shell脚本中的if-else的例子,以便让你更好地了解如何使用这个工具。

命令 描述
&& 逻辑与(Logical AND)
|| 逻辑或(Logical OR)
$0 参数0,即用于运行脚本的命令
$1 第一个参数(更改数字以访问更多参数)
-eq 相等检查
-ne 不相等检查
-lt 小于
-le 小于或等于
-gt 大于
-ge 大于或等于

使用if-else条件语句来检查两个数是否相等

当试图理解像if-else这样的Shell脚本语句的工作原理时,最好从简单的开始。在这里,我们初始化了两个变量a和b,然后使用if-else语句来检查这两个变量是否相等。对于这个任务,bash脚本应该如下所示:

#!/bin/bash
m=1
n=2

if [ $n -eq $m ]
then
        echo "两个变量相同"
else
        echo "两个变量不同"
fi

输出:

两个变量不同

使用if-else来比较两个值

在Shell脚本中,if-else的更常见用法是用于比较两个值。将一个变量与另一个变量或固定值进行比较,在各种情况下被各种程序员使用。

为了这个例子,我们将初始化两个变量,并使用if-else语句来找到其中一个变量大于另一个变量的值。

#!/bin/bash
a=2
b=7
if [ $a -ge $b ]
then
  echo "变量'a'大于变量'b'"
else
  echo "变量'b'大于变量'a'"
fi

输出:

变量'b'大于变量'a'

使用if-else语句检查一个数字是否为偶数

有时候我们会遇到需要处理和区分奇偶数的情况。如果我们使用取模运算符,并结合Shell脚本的if-else语句,就可以完成这个任务。

取模运算符将一个数字除以一个除数并返回余数。

由于我们知道所有的偶数都是2的倍数,我们可以使用以下的Shell脚本来检查一个数字是偶数还是奇数。

#!/bin/bash
n=10
if [ $((n%2))==0 ]
then
  echo "这个数字是偶数"
else
  echo "这个数字是奇数"
fi

输出:

这个数字是偶数

如你所见,我们在条件的一部分外面加了双括号。这是因为我们需要在检查条件之前执行模运算。

同时,使用双括号括起来的语句可以以C风格运行,从而可以在bash脚本中处理一些C风格的命令。

使用if-else作为一个简单的密码提示

if-else语句以其多功能性和应用范围而闻名。在这个例子中,我们将在Shell脚本中使用if-else语句来创建一个密码提示的界面。

为了做到这一点,我们将要求用户输入密码并将其存储在变量pass中。

如果与预设的密码匹配,例如”password”,用户将获得输出:”密码正确”。

否则,Shell脚本会告诉用户密码不正确并要求他们再试一次。

#!/bin/bash
echo "请输入密码"
read pass
if [ $pass="password" ]
then
  echo "密码正确"
else
  echo "密码不正确,请重试"
fi
Bash密码提示

结论

在Shell脚本中,if-else的功能对于Shell程序员来说是一个重要的资产。当你需要根据预定义的条件执行一组语句时,它是最好的工具。

if-else块是条件编程中最重要的部分之一,如果不是最重要的部分。通过控制特定语句的执行,你不仅可以使你的代码更高效,而且还可以节省处理器执行不必要语句所浪费的宝贵时间。

希望这个教程能帮助您理解如何使用if-else语句。如果您有任何疑问、反馈或建议,请随时在下方评论提出。

bannerAds