バッシュでは
Cに似たforループの構文は次のとおりです。
for (( expr1 ; expr2 ; expr3 )) ; do commands ; done
の実行が3つの算術式、および/または
commands
の計算に影響を与え、反復回数(例:反復回数)が変わりますか?expr1
expr2
expr3
それとも、繰り返し(例えば、繰り返し回数)が
commands
各繰り返しの実行に影響を受けませんか?for コマンドの他の構文は次のとおりです。
for name [ [in [words ...] ] ; ] do commands; done
各反復の実行は
commands
反復回数(例:反復回数)に影響しますか?
答え1
確かに:
$ bash -c 'for ((i=0;i<10;i++)); do echo $i; ((i++)); done'
0
2
4
6
8
for ((expr1; expr2; expr3)
フォーム内expr2
(および失敗がないexpr3
場合)は、ループが実行されるたびに評価されます。expr2
他の形式では、bashはwords
アンローリング(コマンドの置き換え、ワイルドカードの実行などを含む)の後にループを開始します。したがって、name
ループが開始されると、反復変数()の可能な値に影響を与えることはできません。もちろんあなたはできます:
$ bash -c 'for i; do echo $i; break; done' _ a b c
a