我试图遍历像这样开始的整数列表:
start=000
for i in $(seq -w $start 48 006);
但是,当我在上面尝试这段代码时,循环似乎循环了一次然后退出。
我需要修改什么? (前导零需要留下)
答案 0 :(得分:2)
请您尝试以下。
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,并且应以差48一直运行到6,这是不可能的,因此它仅打印非常公平的第一个整数值。
编辑: 根据@Cyrus先生的评论,此处不使用seq
添加BASH内置解决方案。
for ((i=0; i<=48; i=i+6)); do printf '%03d\n' $i; done
答案 1 :(得分:1)
seq
的输入开始,递增和结束。
您已经颠倒了增量式的完成方式:{{1}}表示从零开始,增量48直到完成6。简单的解决方法是seq -w $start 48 006
。注意:不需要006,只需6,因为seq -w $start 6 48
会将数字的宽度相等到两个位置。