0
n=5
for i in {1..$[n]}
do
echo $i
done
{1..5}
但我认为它应该输出:
1
2
3
4
5
为什么它给出了这样一个奇怪的输出?
n=5
for i in {1..$[n]}
do
echo $i
done
{1..5}
但我认为它应该输出:
1
2
3
4
5
为什么它给出了这样一个奇怪的输出?
这几乎是一个谜语。大括号的扩展是在可变扩展之前完成的。 bash初学者指南有一些很好的细节expansion 在bash中有很多方法可以做到这一点。
n=5
for i in $(eval echo {1..$n})
do
echo $i
done
http://stackoverflow.com/questions/169511/how-do-i-iterate-over-a-range-of-numbers-defined-by-variables-in-: 你可以下手bash – Aif
由于评估顺序,您不能在bash中使用带有参数的括号扩展。使用'seq'代替。而你的语法是错误的,无所谓,因为它不会工作,但仍然。 –