用SEQ和变量迭代列表



我正在尝试循环浏览一个启动的整数列表:

start=000
for i in $(seq -w $start 48 006);

但是,当我尝试以上代码时,循环似乎循环一次,然后退出。

我需要修改什么?(领先的零需要留下)

您可以尝试以下内容。

start=0
diff=6
for i in $(seq $start $diff 48);
do
  printf '%03dn' $i
done

输出将如下。

000
006
012
018
024
030
036
042
048

在OP的尝试代码中问题:我相信您在seq中给出了错误的语法,应该是startpoint,然后increment_number,然后endpoint EG->(seq(start_point increment end_point))。由于您给了他们错误,因此它仅在循环中打印一次。

在您的尝试中,它的起点为0,应直到6,差48,这是不可能的,因此它仅打印出非常公平的第一个整数值。



编辑:根据@cyrus Sir的评论,在此不使用seq的情况下添加bash indendin解决方案。

for ((i=0; i<=48; i=i+6)); do printf '%03dn' $i; done

seq的输入开始,增量和完成。

您已经以完成的方式逆转增量:seq -w $start 48 006表示从零开始,增量升至48,以完成6。简单的修复是seq -w $start 6 48。注意:不需要006,只有6个,因为seq将数字的宽度均衡到两个位置。

最新更新