bash变量用于for循环数语法的上限

时间:2016-01-18 18:37:08

标签: bash variables for-loop

如果我创建这样的bash循环,使用文字数字,所有都按预期工作:

mix phoenix.gen.html

输出结果为:

#!/bin/bash
for i in {1..10};  do
  echo $i 
done

但是如果我想在变量中使用上限,我似乎无法正确使用它。以下是我的四次尝试:

1
2
3
4
5
6
7
8
9
10

输出现在是:

#!/bin/bash
n=10

for i in {1..$n};  do
  echo $i 
done

for i in {1.."$n"}; do 
  echo $i
done

for i in {1..${n}};  do
  echo $i 
done

for i in {1.."${n}"};  do
  echo $i 
done

不是我想要的...... :(

要明确这个问题:

如何在bash for循环中使用变量作为范围语法的限制?

1 个答案:

答案 0 :(得分:3)

不要使用{...};使用C风格的循环。

for ((i=1; i <= $n; i++)); do

支撑扩展在参数扩展之前发生,因此您无法使用eval生成可变长度序列。这也更有效,因为您不需要在循环开始之前生成可能很大的索引列表。