📜  Bash If语句

📅  最后修改于: 2020-12-29 06:04:53             🧑  作者: Mango

重击如果

在本主题中,我们将了解如何在Bash脚本中使用if语句来完成我们的自动化任务。

如果声明有益,请立即执行。它们用于在顺序执行语句的流程中执行条件任务。 If语句通常允许我们在Bash脚本中做出决定。它们帮助我们根据可能设置的条件来决定是否运行一段代码。

基本的if语句

基本的if语句命令如果特定条件为true,则仅执行给定的一组操作。如果不正确,则不要执行这些操作。 If语句基于以下格式:

句法

if [ expression ];
then
statements
fi

仅当表达式(在方括号之间)为真时,才会执行thenfi之间的语句(如果向后)。

注意:请注意第一行中使用的空格,并在第一行末尾使用分号。两者都必须使用。如果条件语句以fi结尾。

  • 对于使用AND运算符的多个条件:
if [ expression_1 ] && [ expression_2 ];
then
statements
fi
  • 对于使用OR运算符的多个条件:
if [ expression_1 ] || [ expression_2 ];
then
statements
fi
  • 对于具有AND&OR运算符的复合表达式,我们可以使用以下语法:
if [ expression_1 && expression_2 || expression_3 ];
then
statements
fi

以下是一些演示if语句用法的示例:

例子1

在此示例中,采用任意数字的用户输入,并检查该值是否大于125。

#!/bin/bash

read -p " Enter number : " number

if [ $number -gt 125 ]
then
echo "Value is greater than 125"
fi

输出量

如果输入数字159,则输出将如下所示:

例子2

在此示例中,我们通过比较两个字符串的简单场景演示了if语句的用法:

#!/bin/bash

# if condition is true
if [ "myfile" == "myfile" ];
then
echo "true condition"
fi

# if condition is false
if [ "myfile" == "yourfile" ];
then
echo "false condition"
fi

输出量

例子3

在此示例中,我们演示如何使用if语句比较数字:

#!/bin/bash

#if condition (greater than) is true
if [ 10 -gt 3 ];
then
echo "10 is greater than 3."
fi

#if condition (greater than) is false
if [ 3 -gt 10 ];
then
echo "3 is not greater than 10."
fi

#if condition (lesser than) is true
if [ 3 -lt 10 ];
then
echo "3 is less than 10."
fi

#if condition (lesser than) is false
if [ 10 -lt 3 ];
then
echo "10 is not less than 3."
fi

#if condition (equal to) is true
if [ 10 -eq 10 ];
then
echo "10 is equal to 10."
fi

#if condition (equal to) is false
if [ 10 -eq 9 ];
then
echo "10 is not equal to 9"
fi

输出量

例子4

在此示例中,我们将定义如何使用AND运算符在if表达式中包含多个条件:

#!/bin/bash

# TRUE && TRUE
if [ 8 -gt 6 ] && [ 10 -eq 10 ];
then
echo "Conditions are true"
fi

# TRUE && FALSE
if [ "mylife" == "mylife" ] && [ 3 -gt 10 ];
then
echo "Conditions are false"
fi

输出量

例子5

在此示例中,我们将定义如何使用OR运算符在if表达式中包括多个条件:

#!/bin/bash

# TRUE || FALSE
if [ 8 -gt 7 ] || [ 10 -eq 3 ];
then 
echo " Condition is true. "
fi

# FALSE || FALSE
if [ "mylife" == "yourlife" ] || [ 3 -gt 10 ];
then
echo " Condition is false. "
fi

输出量

例子6

在此示例中,我们将定义如何使用AND和OR在if表达式中包括多个条件:

#!/bin/bash

# TRUE && FALSE || FALSE || TRUE
if [[ 10 -eq 10 && 5 -gt 4 || 3 -eq 4 || 3 -lt 6 ]];
then
echo "Condition is true."
fi

# TRUE && FALSE || FALSE
if [[ 8 -eq 8 && 8 -gt 10 || 9 -lt 5 ]];
then
echo "Condition is false"
fi

输出量

Bash脚本中If语句的选项

If语句包含许多执行特定任务的选项。这些选项可用于文件操作,字符串操作等。以下是一些最常用的选项:

Options (Operators) Description
! EXPRESSION To check if EXPRESSION is false.
-n STRING To check if the length of STRING is greater than zero.
-z STRING To check if the length of STRING is zero (i.e., it is empty)
STRING1 == STRING2 To check if STRING1 is equal to STRING2.
STRING1 != STRING2 To check if STRING1 is not equal to STRING2.
INTEGER1 -eq INTEGER2 To check if INTEGER1 is numerically equal to INTEGER2.
INTEGER1 -gt INTEGER2 To check if INTEGER1 is numerically greater than INTEGER2.
INTEGER1 -lt INTEGER2 To check if INTEGER1 is numerically less than INTEGER2.
-d FILE To check if FILE exists and it is a directory.
-e FILE To check if FILE exists.
-r FILE To check if FILE exists and the read permission is granted.
-s FILE To check if FILE exists and its size is greater than zero (which means that it is not empty).
-w FILE To check if FILE exists and the write permission is granted.
x FILE To check if FILE exists and the execute permission is granted.

如果嵌套

您可以在bash脚本中根据需要应用任意多个“ if语句”。也可以在另一个“ if语句”中使用if语句。它被称为嵌套If语句。

在此示例中,我们将使用嵌套的if表达式来查找“给定数字是否大于50,并且是否为偶数”。

#!/bin/bash
#Nested if statement

if [ $1 -gt 50 ]
then
  echo "Number is greater than 50."

  if (( $1 % 2 == 0 ))
  then
    echo "and it is an even number."
  fi
fi

输出量

如果我们将参数值输入为100,则输出将如下所示:

结论

在本主题中,我们讨论了如何在具有bash if语句的语句的顺序执行流程中使用条件分支。