使用 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
会将数字的宽度等同到两个位置。
我正试图循环遍历一个整数列表,开始时是这样的:
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
会将数字的宽度等同到两个位置。