Linux中遍历数字序列最常用方式是类C风格for循环(如for((i=1;i<=10;i++)))和seq命令配合传统for循环;Bash 4.0+还支持{start..end..step}大括号展开,但不支持变量替换步长。

Linux 中用 for 循环遍历数字序列,最常用、最直接的方式是使用 C 风格语法 或 seq 命令配合传统 for 循环。Bash 4.0+ 还支持大括号展开,但要注意它生成的是静态列表,不是真正的“序列计算”。
用 C 风格 for 循环(推荐)
语法简洁、高效,无需外部命令,适合范围较大或逻辑较复杂的场景:
for ((i=1; i<=5; i++)); do
echo "当前数字:$i"
done
说明:
-
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<=6; i++)); do
if [ $i -eq 3 ]; then
continue
fi
echo $i
done
或者只处理偶数:
for ((i=1; i<=10; i++)); do
if (( i % 2 == 0 )); then
echo "$i 是偶数"
fi
done
不复杂但容易忽略:确保脚本以 #!/bin/bash 开头,因为 for ((...)) 是 Bash 特有语法,sh 不支持。


















