所以,基本上下面的代码给出了一个无限循环。但是,如果我将 i+2 和 f+2 更改为 i++ 和 f++,它们不会给出无限循环。有人可以向我解释这是为什么吗?谢谢
#!/bin/bash
for ((i=0; i<5; i+2))
do
for ((f=0; f<5; f+2))
do
echo "$i $f"
done
done
所以,基本上下面的代码给出了一个无限循环。但是,如果我将 i+2 和 f+2 更改为 i++ 和 f++,它们不会给出无限循环。有人可以向我解释这是为什么吗?谢谢
#!/bin/bash
for ((i=0; i<5; i+2))
do
for ((f=0; f<5; f+2))
do
echo "$i $f"
done
done
您需要做+=,而不是+(另外, i+=2 应该是 f+=2 在您的内部循环中):
for ((i=0; i<5; i+=2))
do
for ((f=0; f<5; f+=2))
do
echo "$i $f"
done
done
i+2不改变 的值i。它只是将 2 的当前值加 2i并返回结果。通过增加它i++的值来改变它。i试试这个:
for ((i=0; i<5; i=i+2))
请注意,i=i+2也可以简写为i+=2. 含义相同:将 2 的当前值加 2i并将结果分配给i。
+=语法是简短的形式,因此您也可以表示i+=2为i=i+2
for ((i=0; i<5; i+=2))
do
for ((f=0; f<5; f+=2))
do
echo "$i $f"
done
done