Bash if elif else语句用法教程:Bash如何使用条件语句?

2021年11月19日18:53:41 发表评论 997 次浏览

Bash条件语句使用教程介绍

Bash 脚本有助于在你的机器上自动执行任务。if elif elsebash 脚本中的语句允许创建条件案例和对特定代码结果的响应。该if条件有助于在节目播放过程自动化决策过程。

Bash如何使用条件语句本文解释了该if elif else语句是什么,包括Bash条件语句用法示例和语法。

先决条件

  • 一台装有 Linux 操作系统的机器。
  • 访问命令行/终端。
  • 访问像 Vi/Vim 这样的文本编辑器。

什么是 Bash if 语句?

在编程中,if语句是一个条件表达式。但是,if语句中测试的命令根据退出状态进行评估。所以:

  • 如果命令成功完成,退出状态为0
  • 如果语句抛出错误,则退出状态是1255之间的任意数字。

成功的零值和失败的任何非零值似乎违反直觉。在大多数其他编程语言中,零代表假,一(或更大)代表真。但是,在 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条件语句使用教程结论

按照本教程,你应该知道如何if elif else在 bash 脚本和可用的不同语法中创建语句。接下来,查看如何实现 if 语句来检查 bash 中是否存在文件或目录。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: