使用Seq和变量遍历列表

时间:2019-03-07 04:17:29

标签: bash shell syntax seq

我试图遍历像这样开始的整数列表:

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

但是,当我在上面尝试这段代码时,循环似乎循环了一次然后退出。

我需要修改什么? (前导零需要留下)

2 个答案:

答案 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会将数字的宽度相等到两个位置。