如何在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
语句与elif
和else
组合在一起。
- 如果第一个测试为真,则紧随其后执行语句。
- 如果第一个测试为假,第二个测试用例为真,则在" 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]] |
-L | File是符号链接 | [[-L/path/to/File]] |
-b | File是块设备 | [[-b/path/to/File]] |
-p | File是管道设备 | [[-p/path/to/File]] |
-S | File是套接字 | [[-S/path/to/File]] |
- r | 文件对用户具有读取权限。 | [-r/path/to/File]] |
-w | File对用户具有写入权限。 | [-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