我试图循环遍历一个整数列表,如下所示:
start=000
for i in $(seq -w $start 48 006);
但是,当我尝试上面的代码时,循环似乎循环一次然后退出。
我需要修改什么? (领先的零需要留下)
你可以尝试一下吗?
start=0
diff=6
for i in $(seq $start $diff 48);
do
printf '%03d\n' $i
done
输出如下。
000
006
012
018
024
030
036
042
048
OP尝试过的代码中的问题:我相信你在seq
中给出了错误的语法,它应该是startpoint
然后increment_number
然后endpoint
例如 - >(seq(start_point increment end_point)
)。因为你错误地给它们,所以它只在循环中打印一次。
在你的尝试中它将起始点设为0并且应该运行到6,差值为48这是不可能的,因此它只打印非常合适的第一个整数值。
编辑:根据@Cyrus先生的评论,在这里添加BASH内置解决方案,而不使用seq
。
for ((i=0; i<=48; i=i+6)); do printf '%03d\n' $i; done
seq
的输入需要一个开始,增量和完成。
你用完成来反转增量:seq -w $start 48 006
意味着从零开始,增加48到6完成。简单的修复是seq -w $start 6 48
。注意:不需要006,因为seq
会将数字的宽度均衡到两个位置。