我只是学习用bash编码,而且我在做一些练习时遇到了一些问题。我觉得我可能会对语法做错了,但无论我怎么看,它看起来都不错。
我在这里得到的代码应该找到1000到10000之间的“幸运数字”。在这种情况下,幸运数字是一个数字,其数字总和为一个数字,总和为7。幸运数的计算是否适用于它自己,但是一旦我把它放入for循环中,没有单个输入,输出是无限的和错误的。我只能假设for循环是问题:
Z
如果有人知道我做错了什么,或者甚至是改善它的方法,我会非常感激!
答案 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
做什么都会在下一次迭代中丢失。