📜  Bash 脚本 – If 语句

📅  最后修改于: 2022-05-13 01:56:12.591000             🧑  作者: Mango

Bash 脚本 – If 语句

Bash 是命令语言的解释器。它是大多数 GNU/Linux 系统上的默认命令解释器,并且在各种操作系统上广泛可用。该名称是Bourne-Again SHell 的缩写。脚本可以执行指令,否则这些指令会以交互方式一一执行。

在本文中,我们将讨论 bash 脚本中的 if 语句。

如果语句

if 语句的基本语法如下:

if CONDITION
then
  COMMANDS
fi

if 语句由 if 关键字、条件短语和 then 关键字组成。 fi 关键字用在语句的末尾。如果 CONDITION 评估为 True,则执行 COMMANDS。如果 CONDITION 返回 False,则什么也不会发生;命令被忽略。

例子:

以下是一个示例脚本,它将提示您输入一个数字,然后检查给定的数字是否为偶数。

echo -n "Enter Number: "
read x

if [ $((x%2)) == 0 ]; then
  echo "Number is Even"
fi

输出:

输出

if...else 语句

if…else 语句具有以下基本语法:

if CONDITION
then
  COMMANDS_1
else
  COMMANDS_2
fi

如果 CONDITION 评估为 True,则将执行 COMMANDS_1。否则,如果 CONDITION 返回 False,将运行 COMMANDS_2。语句中只能有一个else 子句。

例子:

让我们扩展上面示例中的脚本来检查给定的数字是偶数还是奇数。

echo -n "Enter Number: "
read x

if [ $((x%2)) == 0 ]; then
  echo "Number is Even"
else
  echo "Number is Odd"
fi

输出:

输出

if...elif...else 语句

以下是 if...elif...else 语句的基本语法:

if CONDITION_1
then
  COMMANDS_1
elif CONDITION_2
then
  COMMANDS_2
else
  COMMANDS_3
fi

如果 CONDITION_1 评估为 True,则将执行 COMMANDS_1。如果 CONDITION_2 评估为 True,则将执行 COMMANDS_2。如果没有任何测试命令评估为 True,则运行 COMMANDS_3。

在语句中,可以有一个或多个elif 子句。 else 子句是可选的。

例子:

让我们扩充上面示例中的代码以添加条件以检查是否为零。

echo -n "Enter Number: "
read x

if [ $x == 0 ]; then
  echo "Number is Zero"
elif [ $((x%2)) == 0 ]; then
  echo "Number is Even"
else
  echo "Number is Odd"
fi

输出:

输出

嵌套 if 语句

If 语句可以嵌套在 Bash 中的 if 语句中。多个 if 语句可以嵌套在另一个 if 语句中。像这样的东西:

if CONDITION_1
then
 if CONDITION_2
 then
   COMMANDS_1
 else
   COMMANDS_2
 fi
else
 COMMANDS_3
fi

如果 CONDITION_1 和 CONDITION_2 都评估为 True,则将运行 COMMANDS_1。如果 CONDITION_2 评估为 False 而 CONDITION_1 保持为 True,则将执行 COMMANDS_2。否则,执行 COMMANDS_3。

例子:

让我们稍微调整一下上面的代码以使用nested-if。

echo -n "Enter Number: "
read x

if [ $((x%2)) == 0 ]; then
 if [ $x == 0 ]; then
   echo "Number is Zero"
 else
   echo "Number is Even"
 fi
else
 echo "Number is Odd"
fi

输出:

输出

关于 CONDITION 的一些注意事项

这些是我在 bash 中编写测试条件时要记住的一些事情。

1. 确保括号和实际的检查/比较语句之间有空格。

例如,以下将不起作用。

if [$x==0]

Bash 将报告关于缺少 ]的错误。

2. 在添加新关键字之前始终结束该行,例如“then”。

if、then、else、elif 和 fi 都是 shell 关键字,这意味着它们不能在同一行中使用。放一个“;”在前一个语句和关键字之间,或以关键字开始新行。

3. 要在一个语句中使用多个条件,请使用逻辑运算符。

我们可以使用逻辑 AND(&&) 或逻辑 OR(||)运算符来使用多个条件。

例如:

if [[ $x -ge $y ]] && [[ $x -ge $z ]]; then
  echo "x is greatest"
fi

这里,-ge 是大于或等于的简写