Ваш фрагмент цикла for не работает, как вам требуется по двум причинам:
(($i += 5))- здесь $iрасширяется до значения i. Таким образом, расширение будет чем-то вроде этого ((375 += 5)), что не имеет смысла (попытка присвоить литеральное число другому литеральному номеру). Обычно это достигается с помощью ((i += 5))(нет, $чтобы расширить переменную)
{375..3500}Будет расширен до первой итерации цикла. Это будет список номеров 375 376 ... 3499 3500. Для каждой итерации цикла, iбудут присваиваться каждому из этих номеров, один за другим. Таким образом, в начале каждой итерации iбудет переназначаться следующее значение в этом списке, считая с шагом 1. ((i += 5))Фактически ничего не делает - он добавляет 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 (немного ближе к вашему БЕЙСИКУ):
count=375
while (( count <= 3500 )); do
echo $count
(( count += 5 ))
done