Linux C风格for循环用(( ))包裹初值、条件、步长三部分,分号分隔;适用于数值计数与索引遍历,不支持字符串列表。

Linux 中的 C 风格 for 循环专为数值控制设计,语法紧凑、逻辑清晰,适合计数、索引遍历或带条件的递增/递减操作。它不处理字符串列表,只在算术上下文中生效。
基本写法与结构
必须用双圆括号 (( )) 包裹三段式表达式,格式固定:
- 初值:如 i=0,直接赋值,不加 $
- 条件判断:如 i,为真(非零)时继续循环
- 步长更新:如 i++、i+=2、i*=3 等任意算术运算
- 三部分之间用分号 ; 分隔,不可省略
常用操作示例
以下命令均可直接在终端运行,无需提前声明变量:
- 正序打印 1 到 5:
for((i=1; i - 倒序打印 10 到 1:
for((i=10; i>=1; i--)); do echo $i; done - 步长为 2,输出 0 2 4 6 8:
for((i=0; i - 两个变量同步变化(如 i 递增、j 递减):
for((i=1, j=10; i
变量使用注意事项
括号内和循环体中对变量的引用规则不同:
- 在 (( )) 内:直接写 i,不加 $;支持 i+1、i 等纯算术表达式
- 在 do 块中:要用 $i 引用当前值,比如 echo $i 或 sum=$((sum + i))
- 所有变量默认为整型,不支持浮点或字符串比较
和传统 for 的关键区别
别把它和 for i in {1..5} 或 for file in *.log 混用:
- 类 C 风格:关注“状态变化”,像编程语言中的 for (int i = 0; i ,强调初始化、条件、更新三要素
- 列表风格:关注“元素遍历”,依赖预生成序列(如 {1..100}、$(seq 1 10) 或通配符结果),更适合文件名、用户列表等非数值场景
- 两者不能混用——括号内不能写字符串、不能展开通配符、也不能调用命令替换











