news 2026/7/6 14:40:17

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
什么是*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命令或

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 14:37:26

模板基础与 SFINAE

模板基础与 SFINAE 1. 函数模板与类模板的区别 面试题&#xff1a;函数模板和类模板在使用上有什么关键区别&#xff1f; 函数模板支持模板参数推导——调用时不需要指定模板参数&#xff0c;编译器根据实参类型自动推导&#xff1a; #include <iostream> #include <t…

作者头像 李华
网站建设 2026/7/6 14:37:21

git的分支介绍

当你在做一个新功能的时候&#xff0c;最好是在一个独立的区域上开发&#xff0c;通常称之为分支。分支之间相互独立&#xff0c;并且拥有自己的历史记录。这样做的原因是&#xff1a;稳定版本的代码不会被破坏不同的功能可以由不同开发者同时开发。开发者可以专注于自己的分支…

作者头像 李华
网站建设 2026/7/6 14:36:39

MyBatisPlus--简介+入门案例

一、简介入门案例MyBatisPlus 主要是对 MyBatis 的简化MybatisPlus(简称 MP)是基于 MyBatis 框架基础上开发的增强型工具&#xff0c;旨在简化开发、提高效率。开发方式&#xff1a;基于 SpringBoot 使用 MyBatisPlusMyBatisPlus 的官网为:https://baomidou.com/introduce/2、入…

作者头像 李华
网站建设 2026/7/6 14:33:15

EB Garamond 12:让16世纪经典字体在数字时代重获新生

EB Garamond 12&#xff1a;让16世纪经典字体在数字时代重获新生 【免费下载链接】EBGaramond12 项目地址: https://gitcode.com/gh_mirrors/eb/EBGaramond12 你是否曾为寻找一款既有历史底蕴又适合现代数字排版的字体而烦恼&#xff1f;EB Garamond 12就是答案&#x…

作者头像 李华
网站建设 2026/7/6 14:33:05

选IP广播时该参考哪些通用标准来判断其专业性?

在现代社会&#xff0c;IP广播系统的应用越来越广泛&#xff0c;无论是校园、企业还是公共场所&#xff0c;都能看到它的身影。然而&#xff0c;市场上的IP广播产品琳琅满目&#xff0c;质量参差不齐。那么&#xff0c;选IP广播时该参考哪些通用标准来判断其专业性呢&#xff1…

作者头像 李华