Döngü snippet'iniz iki nedenden dolayı istediğiniz gibi çalışmadı:
(($i += 5))
- Burada $i
değeri değerine genişletilir i
. Böylece genişleme ((375 += 5))
mantıklı olmayan bir şey olacaktır (başka bir değişmez sayıya değişmez sayı atamaya çalışmak). Bu normalde ((i += 5))
( $
değişkeni genişletmek için hayır )
- Bu
{375..3500}
döngü, döngünün ilk yinelemesinden önce genişletilir. Sayıların listesi olacak 375 376 ... 3499 3500
. Döngünün her yinelemesi i
için, bu numaraların her birine tek tek atanacaktır. Böylece her yinelemenin başlangıcında, i
bu listedeki bir sonraki değere yeniden atanır. 1'lik adımlarla geri sayılır. ((i += 5))
Etkili bir şey yapmaz - i'ye 5 ekler, ancak sonra yeniden yeniden başlatılır sonraki yineleme.
Sanırım for (( ; ; ))
cevabı en çok sevdim , ama düşünmenizi sağlayacak bazı alternatifler:
5'in katları ile uğraştığımız ve {a..b..i}
genişleme bas sürüm 3.2.57 (1) 'de (OS X'te) desteklenmediğinden, bunun yerine bu biraz gizli şeyi yapabiliriz:
for i in 375 {38..349}{0,5} 3500; do
echo $i
done
Bu, bash'ın kartezyen bir ürün oluşturmak için nasıl kullanılabileceğini gösterir.
Genel olarak bir for döngüsü, bunu yapmanın en uygun yolu olduğunu düşünüyorum, ancak ilgileniyorsanız, bir while-loop (BASIC'inize biraz daha yakın) programı kullanabilirsiniz:
count=375
while (( count <= 3500 )); do
echo $count
(( count += 5 ))
done