两个for循环之间的差异

时间:2017-09-21 18:21:16

标签: bash loops

bash中这两个for循环之间有什么区别?

for i in {1..3}; do

for ((i=1;i<=3;i++)); do

2 个答案:

答案 0 :(得分:4)

在第二种形式中,您可以在循环体内操纵循环索引。如果未修改索引,则它们在功能上是等效的:

$ for i in {1..3}; do echo $((i++)); done
1
2
3
$ for ((i=1;i<=3;i++)); do echo $((i++)); done
1
3

答案 1 :(得分:1)

另一个区别是{<1}}在循环开始之前展开,所以你实际上有

{1..3}

对于小范围来说并不是什么大不了的事,但如果你有一个巨大的范围(可能是数千万),它可能会占用大量的内存。

另一方面,在我的轶事测试中,C风格的算术循环要慢得多。

for i in 1 2 3; do ...