Bash 4.0+ 支持类 C 的算术 for 循环,语法为 for ((init; condition; increment)); do ...; done,所有表达式在算术上下文中执行,自动忽略 $,支持变量与运算符。

Linux 中的 Bash Shell 本身不支持 C 风格的 for (init; condition; increment) 语法,但 Bash 4.0+ 提供了类 C 的 算术 for 循环,语法简洁、语义清晰,非常适合实现计数器。
使用 (( )) 的类 C for 循环
Bash 支持在 for 关键字后直接使用双圆括号进行算术运算,格式为:
所有表达式都在算术上下文中执行(自动忽略 `$`,支持变量、运算符和逻辑判断)。
示例:打印 1 到 5
for ((i=1; i<=5; i++)); do
echo $i
done
常见计数器用法
-
正向递增:如
for ((i=0; i —— 输出 0, 2, 4, 6, 8 -
反向递减:如
for ((i=10; i>=1; i--))—— 从 10 倒数到 1 -
结合变量或命令:如
for ((i=1; i -
带条件跳出:可在循环体内用
break或continue控制流程(例如跳过偶数:if ((i % 2 == 0)); then continue; fi)
注意事项
- 括号内不加
$符号(i++正确,$i++错误) - 条件部分为空(如
for ((i=0; ; i++)))表示永真,需手动break终止 - 初始化、条件、增量三部分均可省略(但分号不能少),例如
for ((;;))是无限循环 - 该语法仅 Bash/Zsh 支持,
sh或 Dash 下不可用;脚本开头建议写#!/bin/bash
替代方案(兼容性更强)
若需 POSIX 兼容(比如在 /bin/sh 环境中运行),可用 while 模拟:
i=1
while [ $i -le 5 ]; do
echo $i
i=$((i + 1))
done
虽然稍冗长,但可跨 shell 使用。


















