位置:首页 > Shell > Bash if语句多个条件判断的用法与示例

Bash if语句多个条件判断的用法与示例

时间:2026-08-17  |  作者:云端旅人  |  阅读:0

简介

本教程将向你介绍如何使用带有多个条件的 Bash if 语句,以提升你的 shell 脚本编写技能。

你将学习如何有效地组合逻辑运算符,从而能够编写基于各种条件做出明智决策的脚本。

在本实验结束时,你将能够为日常任务创建多功能的自动化工具。

理解 Bash if 语句的基础知识

让我们从基础开始。在 Bash 中,if 语句可帮助你的脚本根据条件的真假来决定执行什么操作。

当你需要在 Ubuntu 系统上自动化执行任务时,这尤其有用。

在默认目录 /home/labex/project 中打开你的终端。你将在此处编写所有脚本。

首先,通过输入以下命令创建一个名为 basic_if.sh 的简单脚本文件:

```bash touch basic_if.sh ```

添加以下代码来检查文件是否存在:

```bash #!/bin/bash if [[ -f "testfile.txt" ]]; then echo "The file exists." else echo "The file does not exist." fi ```

此脚本使用 [[ -f "testfile.txt" ]] 来测试 testfile.txt 是否存在于当前目录中。

echo 命令将根据结果显示一条消息。

要运行该脚本,需使其可执行:

```bash chmod +x basic_if.sh ```

然后执行它:

```bash ./basic_if.sh ```

由于 testfile.txt 尚未存在,你将看到 "The file does not exist."。

让我们创建该文件以查看另一种结果:

```bash touch testfile.txt ```

再次运行脚本:

```bash ./basic_if.sh ``` ![basic_if.sh](https://file.labex.io/namespace/55ae3196-3a30-4415-8951-c05df8a2cb17/shell/how-to-use-bash-if-statements-with-multiple-conditions/zh/../assets/20250224-15-02-47-P4LZW6c5.png)

现在,它应该输出 "The file exists."。

此步骤向你介绍了基本结构:if、then、else 和 fi。

双括号 [[ ]] 是现代 Bash 的一个特性。与单括号相比,它使条件测试更加可靠。

使用 AND (&&) 添加多个条件

现在,让我们通过同时检查多个条件来让你的 if 语句更加智能。

你将使用 &&(逻辑与)运算符。该运算符要求所有条件都为真时,then 代码块才会执行。

再次打开 basic_if.sh,并将其内容替换为以下更新后的脚本:

```bash #!/bin/bash if [[ -f "testfile.txt" ]] && [[ -r "testfile.txt" ]]; then echo "The file exists and is readable." else echo "The file is either missing or not readable." fi ```

这个脚本会检查两件事:

  • testfile.txt 是否存在(-f)
  • 它是否可读(-r)

只有当这两个条件都为真时,第一条消息才会显示。

运行脚本:

```bash ./basic_if.sh ```

由于你在步骤 1 中创建了 testfile.txt,并且它默认是可读的(因为 labex 用户拥有它),你会看到 "The file exists and is readable."。

为了理解 && 运算符的工作原理,让我们测试相反的情况。

更改文件的权限,使其不可读:

```bash chmod u-r testfile.txt ```

再次运行脚本:

```bash ./basic_if.sh ```

现在,它会输出 "The file is either missing or not readable",因为第二个条件(-r)不满足。

为了后续步骤,恢复文件的可读性:

```bash chmod u+r testfile.txt ```

&& 运算符确保每个条件都必须通过。

这非常适合需要考虑多个标准的情况。

使用 OR (||) 实现灵活的条件判断

接下来要看的是 ||(逻辑或)运算符。

它的规则很直接:只要 至少一个 条件成立,then 里的代码就会执行。

遇到需要更灵活地判断条件的场景,这个运算符就特别好用。

再次打开 basic_if.sh,把内容改成下面这样:

```bash #!/bin/bash if [[ -f "testfile.txt" ]] || [[ -f "backup.txt" ]]; then echo "At least one file exists." else echo "Neither file exists." fi ```

这段脚本会检查 testfile.txt 或 backup.txt 是否存在。

因为 testfile.txt 已经在当前目录里,先运行脚本:

```bash ./basic_if.sh ```

这时会看到 "At least one file exists."。

接着,删除 testfile.txt,专门测试一下 || 的逻辑:

```bash rm testfile.txt ```

然后再运行一次脚本:

```bash ./basic_if.sh ```

这次它会输出 "Neither file exists",因为两个文件都不存在。

再创建一个 backup.txt,让逻辑或条件重新成立:

```bash touch backup.txt ./basic_if.sh ```

现在,结果又会变回 "At least one file exists"。

所以说,只要任意一个条件为真就够了的场景里,|| 运算符就很实用。

组合使用 AND 和 OR 运算符

把 && 和 || 放在一起使用,就可以写出更灵活、更复杂的判断逻辑。

这里要做的,是检查文件是否存在并满足指定条件,同时再加上一个备用条件。

再次打开 basic_if.sh,把内容更新为下面这段代码:

```bash #!/bin/bash if [[ -f "testfile.txt" ]] && [[ -r "testfile.txt" ]] || [[ -f "backup.txt" ]]; then echo "Either testfile.txt is readable or backup.txt exists." else echo "No suitable file found." fi ```

这段脚本的判断逻辑是:

  • testfile.txt 不仅要存在,而且还必须可读
  • 或者,backup.txt 只要存在也可以

先重新创建 testfile.txt:

```bash touch testfile.txt ```

然后运行脚本:

```bash ./basic_if.sh ```

这时会输出 "Either testfile.txt is readable or backup.txt exists",因为 testfile.txt 同时满足存在和可读这两个条件。

接着删除 testfile.txt,但保留 backup.txt:

```bash rm testfile.txt ./basic_if.sh ```

这一次仍然会出现同样的提示,因为 backup.txt 满足了 || 后面的条件。

再把 backup.txt 也删除掉:

```bash rm backup.txt ./basic_if.sh ```

现在,脚本会显示 "No suitable file found."。

这一段演示的重点就在于:通过混合使用这两个运算符,可以把条件判断写得更细、更准确。

将条件应用于实际任务

最后,让我们在实际场景中运用你所学的知识:验证用户输入。

你将编写一个脚本来检查一个数字是否在某个范围内。

创建一个名为 number_check.sh 的新脚本:

```bash touch number_check.sh chmod +x number_check.sh ```

添加以下代码:

```bash #!/bin/bash read -p "Enter a number between 1 and 10: " number if [[ "$number" -ge 1 ]] && [[ "$number" -le 10 ]]; then echo "Valid number: $number" else echo "Invalid number. Please enter a value between 1 and 10." fi ```

这个脚本会提示你输入一个数字,然后使用 && 运算符确保该数字在 1 到 10 之间(包含 1 和 10)。

运行脚本:

```bash ./number_check.sh ```

输入 5 并按下 Enter 键。你会看到 "Valid number: 5"。

再次运行脚本并输入 15,它会回应 "Invalid number. Please enter a value between 1 and 10."。

这是处理用户输入的一种实用方法,可确保你的脚本仅处理有效数据。

总结

在这个实验中,你已经掌握了如何使用 && 和 || 运算符编写带有多个条件的 Bash if 语句。

从检查文件属性到验证用户输入,你已经编写了能够根据复杂条件做出决策的脚本。

这些技能使你能够在 Ubuntu 系统上创建满足各种需求的可靠自动化工具。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多