在 Bash 中实现 for 循环
本文将讨论编写 Bash for
循环的可用 Bash 脚本公式。
首先,我们将学习它的基本语法和概念。稍后,我们将在 Bash 脚本中学习它的不同类型,例如 C 风格的 for
循环表示法和 foreach
或 for-in
风格。
最后,我们将讨论分号 ;
的问题。在 bash 提示符中进行 for
循环时。
Bash for
循环
编程或脚本语言中的循环是一种迭代控制结构,用于重复执行一个语句或一组语句,直到不满足某个条件。
for
循环是一种循环结构,特别适用于某个语句或一组命令需要执行指定次数的情况。我们还可以在 bash 提示符和 Bash 脚本中使用 for
循环。
Bash 脚本提供了两种用于编写 for
循环的语法。第一个被称为 C 风格或三表达式循环,它与 for
循环的 C 语言表述几乎相同。
第二种表述是著名的 foreach
或 for-in
样式构造,也已被许多流行的编程语言(如 PHP、Python、C#、C++11、Ruby 等)采用。
Bash C 风格 for
循环语法
这种风格使用 C 语言等三个表达式来指定循环迭代的次数。
for (( initialization; condition; increment/decrement ))
do
Shell command[s]
done
示例:假设我们要编写一个脚本,可以帮助我们打印一个包含任何用户提供的数字的表格。我们可以使用以下代码来做到这一点。
#!/bin/bash
echo "Enter a Number: "
read number
for ((j=1;j<=10;j++))
do
echo "$number X $j = $((number*j))"
done
上面的代码从用户那里获取一个数字并打印它的表,最多为 10。假设用户输入 5
作为数字,程序的输出应为:
Enter a Number:
5
5 X 1 = 5
5 X 2 = 10
5 X 3 = 15
5 X 4 = 20
5 X 5 = 25
5 X 6 = 30
5 X 7 = 35
5 X 8 = 40
5 X 9 = 45
5 X 10 = 50
Bash Foreach
/For-in
样式语法
这种类型的 for
循环需要一个值/元素列表,并为列表中的每个元素执行一次迭代。该列表可以通过将每个项目分隔在一个空格中来提供,或者你可以指定一个范围。
for Counter in 1 2 3 4 5 .. N
do
1st statement
2nd statement
nth statement
done
示例:打印 Hello World
五次。
#!/bin/bash
for c in 1 2 4 5 6
do
echo "$c Hello World"
done
输出:
1 Hello World
2 Hello World
4 Hello World
5 Hello World
6 Hello World
请注意缺少的 3
。由于循环仅针对列表中给定的项目数进行迭代,因此错过了此数字。因此,变量 c
首先被赋予一个值 1
,然后执行单次迭代。
之后,将 2
分配给 c
,并执行第二次迭代。稍后,列表中的下一个值(即 4
)被分配给 c
,并且该过程继续进行,直到整个列表完成。
for Item in File_0 File_1 File_N
do
Some Operations on Item
done
或者
for Item in $(Command)
do
Some Operations on Item
done
当命令与 for
循环一起使用时,Item
变量将被一个一个地分配给每个输出标记。例如,以下脚本将使用 for
循环打印当前目录中以 f
开头的所有文件或文件夹。
#!/bin/bash
for Item in $(ls f*)
do
echo "$Item"
done
在 Bash for
循环中定义范围和跳转大小
如果你知道某些开始值和结束值之间没有缺少数字。即使两个连续值之间的差异(也称为跳转大小)大于 1,你也可以使用具有以下语法的 for
循环。
for i in {Start_Value..End_Value..Jump_Size}
do
Statement(s)
done
示例:打印 10 到 20 之间的所有偶数将需要 Start_Value=10
、End_Value=20
和 Jump_Size=2
。
#!/bin/bash
for evenNumber in {10..20..2}
do
echo "$evenNumber"
done
输出:
10
12
14
16
18
20
在 Bash 提示符中制作 for
循环并解决分号 ;
的问题
这 ;
用于在单行上分隔或结束命令。还有其他分隔符,例如&
。
然而,当 ;
用于终止命令,只有在上一条命令执行完毕后才执行下一条命令,也称为同步执行。
假设你想在 bash 提示符的单行上编写一个 for
循环,而不使用 newline
作为语句终止符,那么你可以使用 Bash 参考手册 中的以下语法。
for Item [ [in [List of Items] ] ; ] do commands; done
示例:下面的代码等价于我们之前打印偶数的脚本。
#!/bin/bash
for even in {10..20..2} ; do echo "$even";done
三表达式或 C 类型 for
循环的语法如下。
for (( Initilization ; Condition ; Increment/Decrement )) ; do commands ; done
例子:
#!/bin/bash
for ((i=10;i<20;i=i+2));do echo "$i"; done
相关文章
如何在 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 中创建进度条