如果我创建这样的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循环中使用变量作为范围语法的限制?
答案 0 :(得分:3)
不要使用{...}
;使用C风格的循环。
for ((i=1; i <= $n; i++)); do
支撑扩展在参数扩展之前发生,因此您无法使用eval
生成可变长度序列。这也更有效,因为您不需要在循环开始之前生成可能很大的索引列表。