如何在Shell脚本中使用if-else?

时间:2020-02-23 14:43:59  来源:igfitidea点击:

从上一章有关shell脚本中数组的教程开始,让我们了解如何在shell脚本中使用if-else。

条件编程是任何编程语言的重要组成部分,因为执行我们程序中的每条语句通常都是不希望的。

我们需要一种有条件地执行语句的方法。
shell脚本中的if-else可以满足这种情况。

Shell脚本中的条件

条件编程的最重要部分之一是if-else语句。
if-else语句使您可以在代码中执行迭代条件语句。

当我们希望评估条件时,我们在shell脚本中使用if-else,然后决定使用结果在两组或者多组语句之间执行一组。

从本质上讲,这使我们可以选择对条件表达式求值结果的响应。

shell脚本中的if-else如何工作?

现在我们知道什么是if-else函数,以及为什么它对任何程序员都重要,无论其领域如何。
要了解shell脚本中的if-else,我们需要分解条件函数的工作。

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

if [condition]
then
 statement1
else
 statement2
fi

其中我们有四个关键字,即if,then,else和fi。

  • 关键字if后跟一个条件。

  • 评估该条件以确定处理器将执行哪个语句。

  • 如果条件评估为TRUE,则处理器将执行语句,然后执行关键字。
    在语法中,它被称为statement1。

  • 在条件评估为FALSE的情况下,处理器将执行语句,后跟关键字else。
    这在函数语法中表示为statement2。

要记住的重要一点是,与C编程一样,shell脚本也区分大小写。
因此,在代码中使用关键字时需要小心。

如何在shell脚本中使用if-else

很容易看到函数的语法并相信您知道如何使用它。
但是,通过示例理解函数始终是一个更好的选择,因为它们可以帮助您理解函数的不同方面所扮演的角色。

以下是一些有用的shell脚本中if-else示例,可让您更好地了解如何使用此工具。

CommandDescription
&&Logical AND
$0Argument 0 i.e. the command that's used to run the script
$1First argument (change number to access further arguments)
-eqEquality check
-neInequality check
-ltLess Than
-leLess Than or Equal
-gtGreater Than
-geGreater Than or Equal

1.使用if-else检查两个数字是否相等

当试图了解shell脚本中if-else之类的函数的工作方式时,最好以简单的方式开始。
其中我们初始化两个变量a和b,然后使用if-else函数检查两个变量是否相等。
此任务的bash脚本应如下所示。

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

if [ $n -eq $m ]
then
      echo "Both variables are the same"
else
      echo "Both variables are different"
fi

输出:

Both variables are different

2.使用if-else比较两个值

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

为了这个示例,我们将初始化两个变量,并使用if-else函数查找比另一个大的变量。

#!/bin/bash
a=2
b=7
if [ $a -ge $b ]
then
echo "The variable 'a' is greater than the variable 'b'."
else
echo "The variable 'b' is greater than the variable 'a'."
fi

输出:

The variable 'b' is greater than the variable 'a'.

3.使用if-else检查数字是否为偶数

有时我们遇到需要处理和区分偶数和奇数的情况。
如果我们借助模数运算符,可以在shell脚本中使用if-else完成此操作。

模运算符将数字除以除数,然后返回余数。

众所周知,所有偶数都是2的倍数,我们可以使用以下shell脚本来检查数字是偶数还是奇数。

#!/bin/bash
n=10
if [ $((n%2))==0 ]
then
echo "The number is even."
else
echo "The number is odd."
fi

输出:

The number is even

如您所见,我们将条件的一部分括在了方括号中。
那是因为我们需要在检查条件之前执行模运算。

另外,用双括号括起来可以使用C风格的语句,使您可以在bash脚本中处理某些C风格的命令。

4.使用if-else作为简单密码提示

if-else函数以其多功能性和应用范围而闻名。
在此示例中,我们将在shell脚本中使用if-else来创建密码提示的界面。

为此,我们将要求用户输入密码并将其存储在变量pass中。

如果它与预定义的密码(在此示例中为" password")匹配,则用户将获得以下输出:"密码正确"。

否则,shell脚本将告诉用户密码不正确,并要求他们重试。

#!/bin/bash
echo "Enter password"
read pass
if [ $pass="password" ]
then
echo "The password is correct."
else
echo "The password is incorrect, try again."
fi