Bash 中的 For 循环
本文解释了如何在 Bash 脚本中使用范围表示法和三表达式表示法中的 for
循环,就像在 C 编程语言中一样。
Bash 中的 for
循环
for
循环是用于重复执行命令的 Bash 语句。Bash 中的 for
循环使用两个主要符号。这两个符号如下所示。
第一种表示法使用具有定义范围的 for
循环。在下面的语法中,范围的端点是 n
。这意味着 for
循环将在它停止之前执行其中的命令 n
次。
for variable in 1 2 3 ... n
do
command1
command2
done
第二种表示法使用带有三表达式的 for
循环,就像在 C 编程语言中一样。exp1
是初始化,exp2
是条件,exp3
是增量。
for ((exp1; exp2; exp3))
do
command1
command2
done
在 Bash 中使用 for
循环的示例
下面的脚本演示了在 Bash 脚本中使用 for 循环。
该脚本第一次将变量 i
的值设置为 1
,并打印 line number 1
。然后它返回到 for
循环,将变量 i
设置为 2
,并打印 line number 2
。
脚本反复执行此操作,更改 i
的值,直到到达最后一个数字 5。一旦打印 line number 5
,for
循环将自动退出。
#!/bin/bash
for i in 1 2 3 4 5
do
printf "line number $i"
printf "\n"
done
运行上面的脚本会将以下输出打印到标准输出。
line number 1
line number 2
line number 3
line number 4
line number 5
下面的脚本使用花括号来定义 for
循环迭代的范围。花括号内的数字按顺序递增。
第一次,i
的值设置为 1
。该脚本然后在 for
循环内执行两个 printf
命令。i
的值加 1,变为 2
,然后执行 for 循环内的 printf
命令。
i
的值不断增加,直到最终变为 5
,一旦执行了两个 printf
命令,for
循环会自动终止。
!/bin/bash
for i in {1..5}
do
printf "Hello World $i"
printf "\n"
done
以下是运行脚本后打印出来的输出。
Hello World 1
Hello World 2
Hello World 3
Hello World 4
Hello World 5
下面,脚本使用 C 编程语言中的三表达式表示法。在第一个表达式中,x
被初始化为 0
。第二个表达式有条件测试,检查 x
是否小于或等于 max
变量的值。
max
变量的值已设置为 5
。最后一个表达式将 x
的值增加 1
。
第一次,x
的值为 0
,并且条件返回真,因为 0
小于或等于 5
。然后 for
循环将 number: 0
打印到终端,x
的值增加 1
。x
现在变成 1
。
1
是否小于或等于 5
也会被测试,它返回 true,并且 for 循环打印 number: 1
。这个过程不断重复,直到条件返回 false 并且 for
循环退出。
#!/bin/bash
max=5
printf "Print Numbers from 0 to $max\n"
for ((x=0;x<=max;x++)); do
printf "number: $x\n"
done
下面是运行脚本后打印到终端的输出。
Print Numbers from 0 to 5
number: 0
number: 1
number: 2
number: 3
number: 4
number: 5
Bash 的 for
循环中带有 break
的条件退出
下面的脚本演示了使用 break
关键字退出 for
循环。如果 x
变量的值小于或等于 max
变量的值,for
循环被设置为迭代。然而,for
循环中有一个 test
命令。
test
命令检查 x
变量的值是否等于 3
;如果此测试返回 true,则脚本遇到 break
关键字,并退出 for
循环。
#!/bin/bash
max=5
printf "Print Numbers from 0 to $max\n"
printf "Program will exit when we hit 3\n"
for ((x=0;x<=max;x++)); do
printf "number: $x\n"
if [ $x -eq 3 ]
then
break
fi
done
以下是脚本执行时显示到标准终端的输出。当 x
的值等于 3
时存在 for
循环,因为 for
循环内的 test
命令在 x
变量的值设置为 3
时计算算术表达式,它返回 true。然后脚本在 if
语句中遇到 break
关键字并退出。
Print Numbers from 0 to 5
Program will exit when we hit 3
number: 0
number: 1
number: 2
number: 3
用 for
循环替换命令
下面的脚本显示了使用带有命令替换的 for
循环。命令替换是 Bash 的一项功能,它允许我们运行 Linux 命令并将命令的输出存储在 Bash 变量中。使用此功能执行命令后,该命令的标准输出将替换该命令。
在脚本中,cat
命令使用命令替换来执行。cat file1.txt
的输出替换了命令,for
循环遍历命令的输出并使用 printf
命令将其打印到标准输出。
#!/bin/bash
printf "Program prints the lines of a file\n\n"
for line in $(cat file1.txt)
do
printf "$line"
printf "\n"
done
该脚本在执行时会产生以下输出。文件 file1.txt
包含打印到标准终端的三种语言的列表。
Program prints the lines of a file
French
English
Spanish
相关文章
如何在 CentOS 中获取 IP 地址
发布时间:2023/05/04 浏览次数:108 分类:操作系统
-
这篇简短的文章是对 CentOS 的一个简短介绍,然后简要讨论了我们如何使用命令行界面 (CLI) 在 CentOS 中获取服务器 IP 地址。
在 Linux 中更新 YUM
发布时间:2023/05/04 浏览次数:82 分类:操作系统
-
本文介绍了 Linux 中的 yum update 命令。本文将教我们如何在 Linux 中更新 YUM,以及如何在 Linux 系统上安装、更新、删除、查找和管理包。
在 Linux 中安装 Deb 文件
发布时间:2023/05/04 浏览次数:130 分类:操作系统
-
本文介绍如何在 Linux 中安装 deb 文件。在这篇 Linux 文章中,我们将学习如何在 Linux 系统上安装 .deb(Debian 软件包)文件。 我们还将看到如何在安装后删除 .deb 文件。
Linux 中的 lsof 命令
发布时间:2023/05/04 浏览次数:82 分类:操作系统
-
在这篇 Linux 文章中,我们将了解 Linux 操作系统中的 lsof 命令。 我们将看到如何在 Linux 中将此命令用于不同目的。
Linux 解决不能执行二进制文件问题
发布时间:2023/05/04 浏览次数:187 分类:操作系统
-
在本文中,我们将学习如何在 Linux 中执行二进制文件。 如果 Linux 无法执行二进制文件,我们还将学习如何解决错误。
Linux 中错误 Mesg: Ttyname Failed: Inappropriate Ioctl for Device Error
发布时间:2023/05/04 浏览次数:145 分类:操作系统
-
本文介绍如何在 Linux 中解决 mesg: ttyname failed: inappropriate ioctl for device 错误。在 Linux 中,这个错误是由于默认的 vagrant 配置 config.ssh.shell 与 bash -l 交互导致的。
Linux 中的 ps aux 命令
发布时间:2023/05/04 浏览次数:69 分类:操作系统
-
本篇文章将讨论 Linux 中的 ps aux 命令。如果将 aux 快捷方式与 ps 命令一起使用,它将显示用户需要的最多信息,并可以为您提供系统运行进程的当前状态。
Linux 中的 NTP
发布时间:2023/05/04 浏览次数:137 分类:操作系统
-
本篇文章将讨论 Linux 中的 ntp。NTP 是大多数 IT 基础设施使用的核心协议。 使用它的目的是同步日期和时间信息。
在 Bash 中创建进度条
发布时间:2023/05/04 浏览次数:164 分类:操作系统
-
这是有关在 Bash 中创建进度条以显示正在运行的命令或进程的进度的指南。本文将探讨在 Bash(Linux 和 macOS 的默认 shell)中向 shell 脚本添加进度条的几种方法。使用 pv 命令在 Bash 中创建进度条