当前位置: 首页 > news >正文

什么是*Bash* *循环*的正确用法?

循环结构存在于每种编程语言中,包括Bash。循环是 shell 脚本中的重要构建块,它允许迭代执行一段代码。Bash 循环结构包括for 循环while 循环until 循环

👉 有时,你可能会看到 bash 中select 循环的引用。它不属于bash 循环结构的一部分。你可以在我的博文 《如何使用 Shell Select 循环创建简单菜单?》 中了解更多关于 select-loop 的内容。

什么是循环结构?

循环结构是常见的编程构建块,允许我们通过迭代重复执行一段代码。

四种主要的迭代结构类型是计数控制循环(或确定性迭代)、条件控制循环(或不确定性迭代)、无限循环集合控制循环

  • 计数控制循环会重复执行一段代码一定次数。计数可以向上或向下,步长可变。这种循环通常使用for 循环结构。
  • 条件控制循环会重复执行一段代码,直到满足某个条件为止。条件可以在循环开始或结束时测试。这种循环通常使用while 循环结构。
  • 无限循环会永远重复执行一段代码,直到出现异常为止。这种循环通常使用while true 循环结构,有时也称为无尽循环永远循环
  • 集合控制循环会遍历数组的所有元素或列表的所有项。这种循环通常使用foreach 循环for in 循环结构,可能并非所有编程语言都提供。

Bash 中有哪些不同的循环结构?

在 Bash 中,循环属于控制流语句的一部分。Bash 中有三种循环结构:for 循环、while 循环和 until 循环。所有 bash 循环结构的返回状态都等于循环中执行的最后一条命令的退出状态,如果未执行任何命令,则返回零。

For 循环

bash for 循环结构允许两种类型的迭代。第一种是集合控制循环,类似于其他语言中的foreach结构。第二种 for 循环结构是计数控制循环,这是一种带有计数器的传统迭代,也可以用作无限循环

集合控制 for 循环(foreach 或 range)

以下语法用于集合控制for loop中,以遍历列表并为每个成员执行一组命令。它类似于其他语言中的 foreach 语句,可用于遍历数字或单词范围。可以使用 Bash 花括号展开 来实现集合控制循环的示例。

Bash 中的[ in [ words …] ]是可选的。当省略时,for 循环将使用$@变量,并遍历每个位置参数,类似于for name in "$@"

# For 循环语法(foreach 或 range)forname[[in[words …]];]docommandsdone# 示例[me@linux ~]$forosinlinux mac windows;doecho"I love${os}";doneI love linux I love mac I love windows[me@linux ~]$fornumberin{0..100..20};doecho"This is number${number}";doneThis is number0This is number20This is number40This is number60This is number80This is number100# 示例脚本 for-loop-example.sh,使用默认的 $@forx;doecho$x;done# 脚本执行和输出示例[me@linux ~]$bashfor-loop-example.sh123123
计数控制 for 循环(计数器)

以下语法用于计数控制的for loop,即带计数器的 for 循环,它使用 bash 算术扩展。

第一个表达式根据 shell 算术规则计算一次。第二个表达式会重复计算,直到其值为零。每次第二个表达式计算结果不为零时,执行命令块,并计算第三个算术表达式。

for 循环中的任何算术表达式都可以省略。如果省略,则表现为表达式计算结果为 1。你可以使用此结构作为创建无限循环的一种方式。

# For 循环语法(计数器)for((expr1;expr2;expr3));docommandsdone# 带计数器的 for 循环示例[me@linux ~]$for((x=0;x<5;x++));doecho"\$xequals to$x";done$xequals to0$xequals to1$xequals to2$xequals to3$xequals to4# 无限循环示例[me@linux ~]$for((;;));doecho"infinite loop";doneinfinite loop...# 带无限计数递增的无限循环示例[me@linux ~]$for((x=0;;x++));doecho"\$x=$x";done$x=0$x=1$x=2...

While 循环

bashwhile 循环结构可用于创建条件控制循环,使用 bash 条件表达式、bash 算术扩展,或基于任何命令的退出状态。只要测试命令的退出代码状态为,循环就会执行。

这意味着你还可以将 while 循环结构与true命令或

http://www.cnnetsun.cn/news/3185857.html

相关文章:

  • 模板基础与 SFINAE
  • git的分支介绍
  • MyBatisPlus--简介+入门案例
  • ExpRL: Exploratory RL for LLM Mid-Training——用于LLM中期训练的探索性强化学习
  • EB Garamond 12:让16世纪经典字体在数字时代重获新生
  • 选IP广播时该参考哪些通用标准来判断其专业性?
  • 如何快速转换塞尔达传说:旷野之息存档 - Switch与WiiU存档互通终极指南
  • 2026物业退场监管升级背景下的数智化应对策略
  • 2026河南省高考招生之友+录取统计(物理组+历史组)
  • 抖音动态监控助手:5分钟实现博主实时追踪与直播提醒
  • 扫码点单小程序制作流程详解:附2026阿里开发者社区好评率最高的3款点单小程序制作工具
  • Spring4Shell漏洞深度剖析:从数据绑定到RCE的完整攻击链复现
  • 乌鲁木齐公考师资实力榜:李想、成章等本土名师全面评测
  • 2026大数据工程师转型大模型全攻略|薪资翻倍+零基础可转+落地路径
  • ICM-42605与PIC18F67K40实现高精度运动追踪方案
  • 【Java踩坑笔记】26_toString里打印对象?小心无限递归栈溢出
  • 校园体育器材管理系统
  • Aura:俄罗斯大神打造的免费白噪音神器,把森林搬进你的Windows桌面!
  • AI项目交付完就结束了?不,真正值钱的是后面的事
  • Claude Code Auto memory 的审计与编辑机制,为什么普通 markdown 才是最可靠的工程记忆
  • 手写 MCP Server 控制文件系统:50 行代码让 AI 学会读写文件
  • 【Java转AI实战】第3讲:流式输出——LLM的“分页查询“,附生产级SSE踩坑实录
  • 告别数据分析小白!okbiye AI写作,一键搞定论文数据实证分析
  • 踩坑十多款AIGC检测工具后,我给实验室搭了套全本地的论文内容自查系统
  • Dify_搭建智能销售 Agent 工作流
  • 第38篇:数据组织(一):数据所有者的角色与责任
  • 第40篇:IT部门的重组:从“系统维护中心”到“能力集成中心”
  • G. Summmon (Codeforces 2241)
  • 华为MetaERP Oracle EBS COA(会计科目表)完整深度解析一、COA 核心设计哲学(财务架构师视角)COA 全称Chart of Accounts,在 EBS 底层由会计关键弹性域
  • 06-运放运用电路-PH测试