0

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

3 に答える 3

2

+=しない必要があります+(また、内側のループでは 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
于 2012-11-21T04:16:43.703 に答える
0

i+2の値を変更しませんi。の現在の値に 2 を加算しi、結果を返すだけです。i++の値をiインクリメントして変更します。代わりにこれを試してください:

for ((i=0; i<5; i=i+2))

i=i+2のように略記することもできますi+=2。意味は同じです: の現在の値に 2 を加算しi、結果を に代入しiます。

于 2012-11-21T04:19:21.997 に答える
-1

+=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
于 2012-11-21T05:29:55.530 に答える