我需要循环一些值,
for i in $(seq $first $last) do does something here done
对于$firstand $last,我需要它具有固定长度 5。因此,如果输入是1,我需要在前面添加零,使其变为00001。99999例如,它循环直到,但长度必须为 5。
$first
$last
1
00001
99999
例如:00002, 00042, 00212,012312等等。
00002
00042
00212
012312
关于我该怎么做的任何想法?
在您的特定情况下,虽然使用该-f标志可能最容易seq让它在输出列表时格式化数字。例如:
-f
seq
for i in $(seq -f "%05g" 10 15) do echo $i done
将产生以下输出:
00010 00011 00012 00013 00014 00015
更一般地说,bash具有printf内置功能,因此您可以用零填充输出,如下所示:
bash
printf
$ i=99 $ printf "%05d\n" $i 00099
您可以使用该-v标志将输出存储在另一个变量中:
-v
$ i=99 $ printf -v j "%05d" $i $ echo $j 00099
请注意,它printf支持的格式略有不同,seq因此您需要使用%05d而不是%05g.
%05d
%05g