对于循环语法?

时间:2016-11-15 01:17:32

标签: bash

我只是学习用bash编码,而且我在做一些练习时遇到了一些问题。我觉得我可能会对语法做错了,但无论我怎么看,它看起来都不错。

我在这里得到的代码应该找到1000到10000之间的“幸运数字”。在这种情况下,幸运数字是一个数字,其数字总和为一个数字,总和为7。幸运数的计算是否适用于它自己,但是一旦我把它放入for循环中,没有单个输入,输出是无限的和错误的。我只能假设for循环是问题:

Z

如果有人知道我做错了什么,或者甚至是改善它的方法,我会非常感激!

2 个答案:

答案 0 :(得分:2)

i=$(( $i / 10 ))

您正在修改for循环变量。不要这样做;制作副本。

答案 1 :(得分:1)

  

for((i = 1000; i <= 10000; i ++))

如果你想为了bash的缘故学习bash,那么每一个角落都很好,但我建议你把注意力集中在便携式Bourne shell语法上。

  • 它适用于bash,几十年来它已经为数百万程序员工作。很多时候,老方法都是好方法。

  • 您将在各种情况下遇到非bash代码。

大多数Linux系统包括 seq (1)。所以这些工作:

$ for i in $(seq 1000 10000); do echo $i; done | wc -l
9001
$ seq 1000 10000 | while read i; do echo $i; done | wc -l
9001

Shell脚本通常迭代某些输入(比如说文件名列表),而不是 N 次。我猜发明seq是为了在bash开发计数循环语法之前支持计数循环。

作为使用seq的副产品,我认为你的循环体将保持不变。因为循环(while或for)从i的输入中分配seq,所以无论你对身体中的i做什么都会在下一次迭代中丢失。