迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

在 Bash 中实现 for 循环

作者:迹忆客 最近更新:2023/03/17 浏览次数:

本文将讨论编写 Bash for 循环的可用 Bash 脚本公式。

首先,我们将学习它的基本语法和概念。稍后,我们将在 Bash 脚本中学习它的不同类型,例如 C 风格的 for 循环表示法和 foreachfor-in 风格。

最后,我们将讨论分号 ; 的问题。在 bash 提示符中进行 for 循环时。

Bash for 循环

编程或脚本语言中的循环是一种迭代控制结构,用于重复执行一个语句或一组语句,直到不满足某个条件。

for 循环是一种循环结构,特别适用于某个语句或一组命令需要执行指定次数的情况。我们还可以在 bash 提示符和 Bash 脚本中使用 for 循环。

Bash 脚本提供了两种用于编写 for 循环的语法。第一个被称为 C 风格或三表达式循环,它与 for 循环的 C 语言表述几乎相同。

第二种表述是著名的 foreachfor-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=10End_Value=20Jump_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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 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 中的 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 中创建进度条

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便