如何在Bash中迭代由变量定义的数字范围?

当Bash中的数字范围由一个变量给出时,我如何在该范围内进行迭代?

我知道我可以这样做(在Bash文档中称为"序列表达式")。

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

这就得到了。

1
2
3
4
5

然而,我怎样才能用一个变量来替换任何一个范围的端点呢?这并不奏效。

END=5
for i in {1..$END}; do echo $i; done

这就打印出来了。

{1..5}

解决办法
for i in $(seq 1 $END); do echo $i; done 

编辑:与其他方法相比,我更喜欢seq,因为我确实能记住它;)

评论(11)

你可以使用

for i in $(seq $END); do echo $i; done
评论(8)

这在bash中运行良好。

END=5
i=1 ; while [[ $i -le $END ]] ; do
    echo $i
    ((i = i + 1))
done
评论(7)