Seu snippet de loop for não funcionou conforme necessário por dois motivos:
(($i += 5))- aqui o $ié expandido para o valor de i. Assim, a expansão será algo como ((375 += 5)), o que não faz sentido (tentar atribuir um número literal a outro número literal). Isso normalmente seria alcançado com ((i += 5))(não $para expandir a variável)
- O
{375..3500}será expandido antes da primeira iteração do loop. Será a lista de números 375 376 ... 3499 3500. Para cada iteração do loop, iserá atribuído a cada um desses números, um por um. Assim, no início de cada iteração, iserá reatribuído para o próximo valor nessa lista, contando-se nas etapas de 1. O ((i += 5))efetivamente não faz nada - ele adiciona 5 a i, mas, em seguida, é reatribuído novamente no início do próxima iteração.
Acho que gosto mais da for (( ; ; ))resposta, mas aqui estão algumas alternativas para você pensar:
Como estamos lidando com múltiplos de 5 e a {a..b..i}expansão não é suportada na versão 3.2.57 (1) do bash (no OS X), podemos fazer uma coisa um pouco misteriosa:
for i in 375 {38..349}{0,5} 3500; do
echo $i
done
Isso demonstra como o bash pode ser usado para criar um produto cartesiano.
Eu acho que, em geral, um loop for é a maneira mais conveniente de fazer isso, mas se você estiver interessado, pode usar um programa while-loop (um pouco mais próximo do seu BASIC):
count=375
while (( count <= 3500 )); do
echo $count
(( count += 5 ))
done