linux中遍历数字序列最常用方式是类c风格for循环(如for((i=1;i

Linux 中用 for 循环遍历数字序列,最常用、最直接的方式是使用 C 风格语法 或 seq 命令配合传统 for 循环。Bash 4.0+ 还支持大括号展开,但要注意它生成的是静态列表,不是真正的“序列计算”。
用 C 风格 for 循环(推荐)
语法简洁、高效,无需外部命令,适合范围较大或逻辑较复杂的场景:
for ((i=1; i <p>说明:</p>
-
i=1是初始化,i 是条件判断(满足才继续),<code>i++是每次迭代后的操作 - for ((i=0; i 表示步长为 2
- i 是整数,不加
$;引用时才写$i
用 seq 命令配合 for 循环(兼容性好)
适用于老版本 Bash 或需要灵活步长、负数等场景:
for i in $(seq 1 5); do
echo "数字:$i"
done
常见用法:
-
seq 1 2 10→ 1 3 5 7 9(起始、步长、结束) -
seq 10 -2 2→ 10 8 6 4 2(递减) -
seq -f "%02g" 1 5→ 01 02 03 04 05(格式化输出)
⚠️ 注意:$(seq ...) 会先执行命令生成字符串,再被 shell 分割成单词。若数字含空格或特殊字符(极少发生),需加引号或改用 while read 更稳妥。
用大括号展开(简单固定范围)
仅适用于已知的、静态的整数范围,底层是词法展开,不是运行时计算:
for i in {1..5}; do
echo $i
done
特点:
-
{1..10}展开为1 2 3 ... 10,Bash 3.0+ 支持 -
{01..05}自动补零,输出01 02 03 04 05 - {1..$n} 不会生效,需用
eval(不推荐)或换其他方式
实际小技巧:跳过某些数字或加条件
在循环体内加判断即可,比如跳过 3:
for ((i=1; i <p>或者只处理偶数:</p> <pre class="brush:php;toolbar:false;">for ((i=1; i <p>不复杂但容易忽略:确保脚本以 <code>#!/bin/bash</code> 开头,因为 <code>for ((...))</code> 是 Bash 特有语法,<code>sh</code> 不支持。</p>











