したがって、基本的に以下のコードは無限ループを与えています。ただし、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 を加算しi
、結果を返すだけです。i++
の値をi
インクリメントして変更します。代わりにこれを試してください:
for ((i=0; i<5; i=i+2))
i=i+2
のように略記することもできますi+=2
。意味は同じです: の現在の値に 2 を加算しi
、結果を に代入し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