如何在Shell脚本中使用IF ELSE语句

时间:2020-01-09 10:34:24  来源:igfitidea点击:

总览

在本教程中,我们将学习如何在Shell命令中使用Bash IF Else语句。

IF逻辑运算符通常在编程语言中用于控制流。我们可以使用它来检查一个值的状态,无论该值是否等于另一个值。或者是否已设置,例如。

我们首先来看基本的if语句是Bash,然后转到if..else和if..elif..else。

IF Bash声明

bash中IF语句的基本语法如下所示。如果我们有编程经验,我们会发现它与我们所使用的完全不同。

if TEST-COMMAND
then
     STATEMENTS
fi

在" TEST-COMMAND"中,我们可以编写测试用例以检查是否正确。

  • 如果测试结果为true,则一条或者多条语句将
  • 如果测试结果为假,则不会执行IF语句中定义的语句。

IF..Else Bash声明

在编写IF语句时,无论测试结果是true还是false,都要执行else运算符。

if TEST-COMMAND
then
     STATEMENTS
else
     STATEMENTS
fi

通过使用" else"运算符," if"语句将根据测试用例执行一组不同的语句。

  • 如果测试结果为真,则在" then"之后执行语句
  • 如果测试结果为假,则在" else"逻辑运算符之后执行语句。

IF ELIF Bash声明

单个IF语句块中可以使用多个IF测试。要通过BASH或者Shell脚本执行此操作,请使用elif运算符。

if TEST-COMMAND
then
     STATEMENTS
elif TEST-COMMAND
     STATEMENTS
else
     STATEMENTS
fi

在上面的示例中,我们将if语句与elifelse组合在一起。

  • 如果第一个测试为真,则紧随其后执行语句。
  • 如果第一个测试为假,第二个测试用例为真,则在" elif"逻辑之后立即执行语句。
  • 如果前两个测试用例在逻辑" else"之后立即返回错误的execute语句。

逻辑运算符

在执行比较测试时,请使用运算符。提供了用于整数比较,字符串比较和文件比较的运算符。

用于整数比较的逻辑运算符

运算符说明示例
-gt大于[[$var-gt 10]]
-ge大于或者等于[$var-ge 10]]
-lt小于[[$var-lt 10]]
-le小于或者等于[$var-le 10]]
-等式等于[[$var-等式10]]
-ne不等于[[$var-ne 10]]

用于字符串比较的逻辑运算符

运算符说明示例
==等于[[$var1==“示例”]]
!=``不等于[$var1!=$var2]]`
-z字符串为空[-z$var]
-n字符串不为空[-n$var]
<ASCII值小于[[$var<10]]
>ASCII值大于[[$var>10]]

文件的逻辑运算符

运算符说明示例
-e文件存在[[-e/path/to/file]]
-f文件是常规文件,/
不是目录
[-f/path/to/file]]
-d文件是目录[[-d/path/to/directory]]
-s文件不是零大小[-s/path/to/File]]
-LFile是符号链接[[-L/path/to/File]]
-bFile是块设备[[-b/path/to/File]]
-pFile是管道设备[[-p/path/to/File]]
-SFile是套接字[[-S/path/to/File]]
-r文件对用户具有读取权限。[-r/path/to/File]]
-wFile对用户具有写入权限。[-w/path/to/File]]

Bash整数比较

如果大于或者等于

要检查一个值或者变量是否大于一个值,请在测试中使用-gt标志。

[[ x -gt y ]]

在一个示例中,如果逻辑检查变量$ foo是否大于10,则使用以下代码。

if [[ $foo -gt 10 ]]
then
     echo $foo is greater than 10
else
     echo $foo is not greater then 10
fi

小于或者等于

if [[ $foo -lt 10 ]]
then
     echo $foo is greater than 10
else
     echo $foo is not greater then 10
fi

等于或者其他

if [[ $foo -eq 10 ]]
then
     echo $foo is greater than 10
else
     echo $foo is not greater then 10
fi

Bash字符串比较

如果Variable为Null

要检查变量是否为空(未设置),请使用-z字符串比较运算符。在以下示例中,我们检查以确认是否设置了$ foo。

if [[ -z $foo ]]
then
     echo "$foo is not set"
fi

如果Variable不为Null

要检查变量是否不为空,请使用-n字符串比较运算符。例如,要检查变量$ bar是否不为null,可以如下编写if语句。

if [[ -n $foo ]]
then
     echo "$foo is not set"
fi

如果变量等于字符串

要检查两个字符串是否相等或者彼此匹配,请使用" =="字符串比较运算符。

例如,要检查$ var1是否等于" cats",可以编写以下if语句。

if [[ $var1 == "cats" ]]
then
     echo "$var1 equals 'cats'"
fi