我通过 bash 脚本编写了一个简单的代码,
代码 1
for((i=1;i<=10;i++))
do
echo $i
i=$((i+1))
echo $i
i=$((i+2))
done
代码 1 的输出
1
2
5
6
9
10
代码 2
for i in {1..10}
do
echo $i
i=$((i+1))
echo $i
i=$((i+2))
done
代码2的输出
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
11
我只是想知道,为什么输出不一样?
提前致谢
最佳答案
使用 in
,变量遍历列表。你可以在循环中改变它的值,但是当下一次迭代开始时,下一个值将被分配给它,不管你分配给它什么值。 (而且我无法想象任何其他行为:shell 是否应该尝试猜测您要在列表中跳转多远?如果该值重复或根本不存在于列表中怎么办?)
使用 C 风格的 for
,变量被初始化,并且在每次迭代中,它的值被改变并且条件被检查。没有值列表,只有结束循环的条件。
关于bash - 为什么 `for i in {1..10}` 与 `for ((i=1; i<=10; i++))` 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67082265/