bash中这两个for
循环之间有什么区别?
for i in {1..3}; do
和
for ((i=1;i<=3;i++)); do
答案 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 ...