您的for循环摘要无法按您的要求运行,原因有两个:
(($i += 5))
-在此将$i
扩展为的值i
。因此,扩展将类似于((375 += 5))
,这是没有意义的(试图将一个文字数字分配给另一个文字数字)。通常,这可以通过((i += 5))
(不$
扩展变量)来实现
- 该
{375..3500}
会循环的第一次迭代前都会进行扩展。这将是数字列表375 376 ... 3499 3500
。对于循环的每次迭代,i
将一对一地分配给每个数字。因此,在每次迭代开始时,i
将被重新分配给该列表中的下一个值,以1为步长进行计数。((i += 5))
实际上什么也没做-它确实将i加了5,但随后只是在i的开始处再次重新分配了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