次の2つの理由により、必要なforループスニペットが機能しませんでした。
(($i += 5))
-ここで$i
は、の値に展開されますi
。したがって、展開はのようなものになり((375 += 5))
、意味がありません(リテラル番号を別のリテラル番号に割り当てようとします)。これは通常((i += 5))
($
変数を展開しない)で達成されます
{375..3500}
ループの最初の反復の前に展開されます。数字のリストになります375 376 ... 3499 3500
。ループの反復i
ごとに、これらの番号のそれぞれに1つずつ割り当てられます。したがって、各反復の開始時に、i
はそのリストの次の値に再割り当てされ、1ずつ増加します。((i += 5))
事実上何もしません-iに5を追加しますが、その後、iは最初の開始時に再び再割り当てされます次の反復。
私はそのfor (( ; ; ))
答えが一番好きだと思いますが、あなたに考えさせるためのいくつかの選択肢があります:
5の倍数を扱っており{a..b..i}
、bashバージョン3.2.57(1)(OS Xの場合)では拡張がサポートされていないため、代わりにこれを少し難解なことができます。
for i in 375 {38..349}{0,5} 3500; do
echo $i
done
これは、bashを使用してデカルト積を作成する方法を示しています。
一般的にはforループがこれを行うのに最も便利な方法だと思いますが、興味があれば、whileループ(BASICに少し近い)プログラムを使用できます。
count=375
while (( count <= 3500 )); do
echo $count
(( count += 5 ))
done