Bash if elif else语句用法教程(Bash如何使用条件语句())

Bash条件语句使用教程介绍Bash 脚本有助于在你的机器上自动执行任务。if elif elsebash 脚本中的语句允许创建条件案例和对特定代码结果的响应。该if条件有助于在节目播放过程自动化决策过程。
Bash如何使用条件语句?本文解释了该if elif else语句是什么,包括Bash条件语句用法示例和语法。
先决条件

  • 一台装有 Linux 操作系统的机器。
  • 访问命令行/终端。
  • 访问像 Vi/Vim 这样的文本编辑器。
什么是 Bash if 语句?在编程中,if语句是一个条件表达式。但是,if语句中测试的命令根据退出状态进行评估。所以:
  • 如果命令成功完成,退出状态为0。
  • 如果语句抛出错误,则退出状态是1到255之间的任意数字。
成功的零值和失败的任何非零值似乎违反直觉。在大多数其他编程语言中,零代表假,一(或更大)代表真。但是,在 bash 脚本中,UNIX 约定返回退出状态而不是真值,不应将两者混淆。
通过运行以下命令在终端中测试示例错误命令(1 大于 100):
test 1 -gt 100

使用echo 命令检查退出状态:
echo $?

Bash if elif else语句用法教程(Bash如何使用条件语句())

文章图片
测试返回一个退出代码1,表示表达式失败。
同样,检查在终端中成功评估(1000 大于 100)的示例命令:
test 1000 -gt 100

打印退出状态以确认命令成功:
echo $?

Bash if elif else语句用法教程(Bash如何使用条件语句())

文章图片
测试返回一个退出代码0,显示命令已完成且没有错误。
Bash if 语句使用示例Bash如何使用条件语句?按照以下说明使用if语句创建示例 bash 脚本。
1. 打开终端(CTRL  +  ALT  +  T)并创建一个示例脚本来测试 bashif语句的工作方式:
vi test_script.sh

2. 在脚本中,添加以下几行:
echo -n "Please enter a whole number: " read VAR echo Your number is $VAR if test $VAR -gt 100 then echo "It's greater than 100" fi echo Bye!

Bash if elif else语句用法教程(Bash如何使用条件语句())

文章图片
脚本中的每一行都执行以下操作:
  • 第 1-3 行提供了通过控制台输入数字的说明。该数字被读入一个调用VAR并打印的变量中。
  • 第 4 行开始该if语句并在 (  $VAR -gt 100)之后检查命令的退出状态。
  • 第 5-6 行表示只有在第 4 行中的语句成功完成(退出状态为 0)时才开始执行命令,这意味着我们输入了一个大于 100 的数字。
  • 第 7 行表示if语句的结束。
  • 第 8行在语句之外并按预期运行,无论if结果如何。
3.保存并关闭 Vim:
:wq

4. 接下来,使文件可执行:
chmod +x test_script.sh

5. 最后,运行脚本:
./test_script.sh

Bash if elif else语句用法教程(Bash如何使用条件语句())

文章图片
该脚本根据输入的数字输出不同的消息。多次运行脚本并测试其他数字以确认行为。
Bash条件语句使用教程:Bash if 语句语法Bash如何使用条件语句?bash if语句的基本语法是:
if < commands> then < commands> fi

每个关键字都有特定的功能:
  • if表示语句的开始。紧随其后的命令是应用退出状态检查的命令。
  • then  仅当上一次审查成功完成时才执行命令。
  • fi  关闭 if 语句。
将测试命令括在不同的括号中会导致if语句的执行方法不同。下表提供了每个支架类型的简短描述和用例。
句法这是什么何时使用
if ( < commands> )在子进程中执行的子shell。当命令影响当前 shell 或环境时。子shell 完成后,更改不会保留。
if (( < commands> ))Bash 扩展。用于算术运算和 C 风格的变量操作。
if [ < commands> ]POSIX 内置,别名为test < commands> .比较数字并测试文件是否存在。
if [[ < commands> ]]Bash 扩展,单方括号的高级版本。匹配通配符模式的字符串。
下面是使用每个括号类型的示例 bash 脚本,并提供更深入的解释。
单括号语法
Bash条件语句用法示例:在 bash 脚本中使用单括号会创建一个子 shell。当与if语句结合使用时,子进程在继续程序之前完成。在if分析了退出状态,并采取相应的行动。
if带有单括号语法的 bash语句如下所示:
if ( < commands> ) then < commands> fi

试试下面的例子,看看子流程如何与if语句一起工作:
1. 使用Vim创建脚本:
vi single_parentheses.sh

2. 将以下代码行添加到脚本中:
outer_variable=Defined echo Before if: echo inner_variable = $inner_variable echo outer_variable = $outer_variable if ( echo Inside subshell: inner_variable=Defined echo inner_variable = $inner_variable outer_variable=Changed echo outer_variable = $outer_variable ) then echo After then: echo inner_variable = $iner_variable echo outer_variable = $outer_variable fi echo After fi: echo inner_variable = $inner_variable echo outer_variable = $outer_variable

Bash if elif else语句用法教程(Bash如何使用条件语句())

文章图片
该程序执行以下操作:
  • 第 1 行创建了一个名为的变量outer_variable,我们在其中存储了一个字符串Defined
  • 第 2-4行将变量打印到控制台。此时,里面outer_variable存储了一个字符串,而inner_variable为空。
  • 第 5 行开始if语句和一个子过程,由单括号分隔。
  • 第 6-11 行在the 中存储一个字符串并将 theinner_variable更改outer_variable为不同的字符串。这两个值都打印到控制台,子进程以退出代码结束。在这种情况下,子流程以退出代码成功结束0
  • 第 12-16 行在子流程之后执行并打印变量值。但是,这些值会变回它们在if语句之前的状态。子流程仅在本地存储值,而不是全局存储值。
  • 第 16-19 行在then子句中的命令之后运行。这些值在语句之外保持不变。
3. 保存脚本并关闭编辑器:
:wq

4. 使脚本可执行:
chmod +x single_parentheses.sh

5. 最后,运行示例以测试结果:
./single_parentheses.sh

Bash if elif else语句用法教程(Bash如何使用条件语句())

文章图片
随着程序的进行,输出会打印变量状态。
Bash条件语句使用教程:双括号语法
bashif语句的双括号语法是:
if (( < commands> )) then < commands> fi

bash 中的双括号结构允许:
  • 算术评估。将变量定义为a=$(( 1+1 ))计算方程并设置a为 2。
  • C 风格的变量操作。例如,使用 增加变量(( a++ ))
Bash如何使用条件语句?在if语句中使用双括号语法时,计算的行为不同。假设表达式的计算结果为0,则if测试未通过。
注意:双括号类似于大多数其他编程语言,其中 0 为假,1 为真。
Bash条件语句用法示例:试试下面的例子来看看双括号是如何工作的:
1.在终端创建一个bash脚本:
vi double_parentheses.sh

2. 在double_parentheses.sh 中添加以下代码:
variable=-2 echo Before first if: $variable if (( variable++ )) then echo Incremented ++ style: $variable fi echo After first if: $variable if (( variable=variable+1 )) then echo Incremented arithmetically $variable fi echo After second if: $variable

Bash if elif else语句用法教程(Bash如何使用条件语句())

文章图片
脚本中的每个行号执行以下操作:
  • 第 1 行定义了一个变量并将值设置为-2
  • 第 3-5 行增加双括号内的 C-style 值并检查该值。如果变量不为零,则 if 将向控制台打印一条消息。
  • 第 8-10 行使用常规算术符号将变量加 1,如果变量不为零,则打印一条消息。
3. 保存脚本并关闭 Vim:
:wq

4. 修改脚本权限为可执行:
chmod +x double_parentheses.sh

5. 运行脚本查看结果:
./double_parentheses.sh

Bash if elif else语句用法教程(Bash如何使用条件语句())

文章图片
单括号语法
单括号是test命令的另一个名称,是所有 shell 可用的标准 POSIX 实用程序。基本语法是:
if [ < commands> ] then < commands> fi

if本教程中提供的第一个 bash示例 (  test_script.sh  ) 与替代语法同样适用:
echo -n "Please enter a whole number: " read VAR echo Your number is $VAR if [ $VAR -gt 100 ] then echo "It's greater than 100" fi echo Bye!

Bash if elif else语句用法教程(Bash如何使用条件语句())

文章图片
运行脚本以确认输出是等效的。有关使用括号语法的完整文档和详细信息,请在实用程序上运行man 命令test
man test

双括号语法
if如果不需要可移植性,bash脚本中的双括号语法是最好的选择。双括号优于单括号,包括许多高级选项。语法是:
if [ [ < commands> ]] then < commands> fi

试试下面的例子,看看通配符字符串匹配是如何在if命令中工作的:
1. 创建一个名为double_brackets的 shell 脚本文件:
vi double_brackets.sh

2. Bash条件语句用法示例:添加以下代码:
if [ [ $USER == k* ]] then echo Hello $USER fi echo Bye!

Bash if elif else语句用法教程(Bash如何使用条件语句())

文章图片
3. 脚本检查用户名的起始字母是否是k,如果是则发送hello消息。保存并关闭脚本:
:wq

4. 使用chmod使文件可执行:
chmod +x double_brackets.sh

5. 运行程序:
./double_brackets.sh

Bash if elif else语句用法教程(Bash如何使用条件语句())

文章图片
其他类型的 Bash 条件语句Bash如何使用条件语句?该if语句仅执行一项条件检查。if使用其他类型的 bash 条件修改以创建复杂的评估。
if else 语句
if else语句提供了一种方法来根据检查条件的输出定义不同的操作。基本语法是:
if < command> then < commands> else < commands> fi

以下示例演示了if else条件的工作原理:
1. 使用 Vim 创建一个新脚本:
vi if_else.sh

2. 在脚本中插入以下代码:
echo -n "Please enter a whole number: " read VAR echo Your number is $VAR if [ $VAR -gt 100 ] then echo "It's greater than 100" else echo "It's less than 100" fi echo Bye!

Bash if elif else语句用法教程(Bash如何使用条件语句())

文章图片
该语句检查第4 行中的命令输出,并根据结果打印一条描述性消息:
  • 如果输入的数字大于 100,则程序进入第 6 行并打印消息。
  • 如果数字小于 100,则else子句(第 8 行)中的消息将打印到控制台。
3. 保存脚本并关闭 Vim:
:wq

4. 使脚本可执行:
chmod +x if_else.sh

5. 最后,多次运行脚本并测试各种值:
./if_else.sh

Bash if elif else语句用法教程(Bash如何使用条件语句())

文章图片
Bash条件语句使用教程:if elif 语句
elif条款与联合if else  声明中创建多个条件检查。这if elif会创建一系列具有不同结果的检查。语法是:
if < command> then < commands> elif < command> then < commands> else < commands> fi

使用elif以下命令创建脚本:
1. 创建一个名为elif的 shell 文件:
vi elif.sh

2. Bash条件语句用法示例:在elif.sh文件中,添加如下示例代码:
echo -n "Please enter a whole number: " read VAR echo Your number is $VAR if [ $VAR -gt 100 ] then echo "It's greater than 100" elif [ $VAR -lt 100 ] then echo "It's less than 100" else echo "It's exactly 100" fi echo Bye!

Bash if elif else语句用法教程(Bash如何使用条件语句())

文章图片
该示例elif在第 7 行添加了一个检查,以查看输入的数字是否小于 100。如果第 4 行和第 7 行中的语句都失败,则程序跳转到 else 子句。
3. 保存并关闭文件:
:wq

4. 使elif.sh文件可执行:
chmod +x elif.sh

5. 多次运行脚本并检查不同数字的行为:
./elif.sh

Bash if elif else语句用法教程(Bash如何使用条件语句())

文章图片
添加多个elif子句以分支语句以进行进一步详细检查。对于ifandelif模式系列增长的实例,更好的选择是使用case语句。
嵌套 if 语句
Bash如何使用条件语句?嵌套if语句在if. 具体来说,当一个命令通过第一个 if 检查时,它会通过一个新的检查来进一步过滤结果。语法是:
if < commands> then if < commands> then < commands> fi fi

嵌套 if 通常用于搜索多维数组。但是,尽量避免使用超过两个或三个嵌套if语句以降低程序复杂性。当嵌套if不断深入时,重新思考代码的逻辑。
Bash条件语句使用教程结论【Bash if elif else语句用法教程(Bash如何使用条件语句())】按照本教程,你应该知道如何if elif else在 bash 脚本和可用的不同语法中创建语句。接下来,查看如何实现 if 语句来检查 bash 中是否存在文件或目录。

    推荐阅读