Bash条件语句使用教程介绍Bash 脚本有助于在你的机器上自动执行任务。if elif else
bash 脚本中的语句允许创建条件案例和对特定代码结果的响应。该if
条件有助于在节目播放过程自动化决策过程。
Bash如何使用条件语句?本文解释了该if elif else
语句是什么,包括Bash条件语句用法示例和语法。
先决条件
- 一台装有 Linux 操作系统的机器。
- 访问命令行/终端。
- 访问像 Vi/Vim 这样的文本编辑器。
if
语句是一个条件表达式。但是,if
语句中测试的命令根据退出状态进行评估。所以:- 如果命令成功完成,退出状态为0。
- 如果语句抛出错误,则退出状态是1到255之间的任意数字。
通过运行以下命令在终端中测试示例错误命令(1 大于 100):
test 1 -gt 100
使用echo 命令检查退出状态:
echo $?
文章图片
测试返回一个退出代码
1
,表示表达式失败。同样,检查在终端中成功评估(1000 大于 100)的示例命令:
test 1000 -gt 100
打印退出状态以确认命令成功:
echo $?
文章图片
测试返回一个退出代码
0
,显示命令已完成且没有错误。Bash if 语句使用示例Bash如何使用条件语句?按照以下说明使用
if
语句创建示例 bash 脚本。1. 打开终端(CTRL + ALT + T)并创建一个示例脚本来测试 bash
if
语句的工作方式: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!
文章图片
脚本中的每一行都执行以下操作:
- 第 1-3 行提供了通过控制台输入数字的说明。该数字被读入一个调用
VAR
并打印的变量中。 - 第 4 行开始该
if
语句并在 ($VAR -gt 100
)之后检查命令的退出状态。 - 第 5-6 行表示只有在第 4 行中的语句成功完成(退出状态为 0)时才开始执行命令,这意味着我们输入了一个大于 100 的数字。
- 第 7 行表示
if
语句的结束。 - 第 8行在语句之外并按预期运行,无论
if
结果如何。
:wq
4. 接下来,使文件可执行:
chmod +x test_script.sh
5. 最后,运行脚本:
./test_script.sh
文章图片
该脚本根据输入的数字输出不同的消息。多次运行脚本并测试其他数字以确认行为。
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 脚本中使用单括号会创建一个子 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
文章图片
该程序执行以下操作:
- 第 1 行创建了一个名为的变量
outer_variable
,我们在其中存储了一个字符串Defined
。 - 第 2-4行将变量打印到控制台。此时,里面
outer_variable
存储了一个字符串,而inner_variable
为空。 - 第 5 行开始
if
语句和一个子过程,由单括号分隔。 - 第 6-11 行在the 中存储一个字符串并将 the
inner_variable
更改outer_variable
为不同的字符串。这两个值都打印到控制台,子进程以退出代码结束。在这种情况下,子流程以退出代码成功结束0
。 - 第 12-16 行在子流程之后执行并打印变量值。但是,这些值会变回它们在
if
语句之前的状态。子流程仅在本地存储值,而不是全局存储值。 - 第 16-19 行在
then
子句中的命令之后运行。这些值在语句之外保持不变。
:wq
4. 使脚本可执行:
chmod +x single_parentheses.sh
5. 最后,运行示例以测试结果:
./single_parentheses.sh
文章图片
随着程序的进行,输出会打印变量状态。
Bash条件语句使用教程:双括号语法
bash
if
语句的双括号语法是:if (( <
commands> ))
then
<
commands>
fi
bash 中的双括号结构允许:
- 算术评估。将变量定义为
a=$(( 1+1 ))
计算方程并设置a
为 2。 - C 风格的变量操作。例如,使用 增加变量
(( a++ ))
。
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
文章图片
脚本中的每个行号执行以下操作:
- 第 1 行定义了一个变量并将值设置为
-2
。 - 第 3-5 行增加双括号内的 C-style 值并检查该值。如果变量不为零,则 if 将向控制台打印一条消息。
- 第 8-10 行使用常规算术符号将变量加 1,如果变量不为零,则打印一条消息。
:wq
4. 修改脚本权限为可执行:
chmod +x double_parentheses.sh
5. 运行脚本查看结果:
./double_parentheses.sh
文章图片
单括号语法
单括号是
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!
文章图片
运行脚本以确认输出是等效的。有关使用括号语法的完整文档和详细信息,请在实用程序上运行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!
文章图片
3. 脚本检查用户名的起始字母是否是
k
,如果是则发送hello消息。保存并关闭脚本::wq
4. 使用chmod使文件可执行:
chmod +x double_brackets.sh
5. 运行程序:
./double_brackets.sh
文章图片
其他类型的 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!
文章图片
该语句检查第4 行中的命令输出,并根据结果打印一条描述性消息:
- 如果输入的数字大于 100,则程序进入第 6 行并打印消息。
- 如果数字小于 100,则
else
子句(第 8 行)中的消息将打印到控制台。
:wq
4. 使脚本可执行:
chmod +x if_else.sh
5. 最后,多次运行脚本并测试各种值:
./if_else.sh
文章图片
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!
文章图片
该示例
elif
在第 7 行添加了一个检查,以查看输入的数字是否小于 100。如果第 4 行和第 7 行中的语句都失败,则程序跳转到 else 子句。3. 保存并关闭文件:
:wq
4. 使elif.sh文件可执行:
chmod +x elif.sh
5. 多次运行脚本并检查不同数字的行为:
./elif.sh
文章图片
添加多个
elif
子句以分支语句以进行进一步详细检查。对于if
andelif
模式系列增长的实例,更好的选择是使用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 中是否存在文件或目录。推荐阅读
- 如何在Windows上安装Yarn(详细安装步骤教程)
- 如何在S.0 BMC实例上设置沙盒环境(分步指南)
- 如何在Ubuntu 20.04上安装Ruby(详细安装步骤指南)
- SOAP与REST API有哪些区别(哪个更好?)
- Linux中的AWK命令及示例(如何使用AWK())
- Android拍照摄像方向旋转的问题 代码具体解释
- Android中的动画具体解释系列——飞舞的蝴蝶
- NHibernate3剖析(Mapping篇之ConfORM实战:概览)
- Android Studio,使用外部模拟器作为生成app调试的模拟器