2013-10-24 78 views
0
n=5 
    for i in {1..$[n]} 
    do 
     echo $i 
    done 

它给:为什么这个shell脚本不起作用?

{1..5} 

但我认为它应该输出:

1 
2 
3 
4 
5 

为什么它给出了这样一个奇怪的输出?

+3

http://stackoverflow.com/questions/169511/how-do-i-iterate-over-a-range-of-numbers-defined-by-variables-in-: 你可以下手bash – Aif

+0

由于评估顺序,您不能在bash中使用带有参数的括号扩展。使用'seq'代替。而你的语法是错误的,无所谓,因为它不会工作,但仍然。 –

回答

2

这几乎是一个谜语。大括号的扩展是在可变扩展之前完成的。 bash初学者指南有一些很好的细节expansion 在bash中有很多方法可以做到这一点。

n=5 
for i in $(eval echo {1..$n}) 
do 
    echo $i 
done 
相关问题