使用 Seq 和变量遍历列表

Iterate Through List with Seq and Variable

我正试图循环遍历一个整数列表,开始时是这样的:

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,只需 6,因为 seq 会将数字的宽度等同到两个位置。