したがって、基本的に以下のコードは無限ループを与えています。ただし、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