我需要循环一些值,

for i in $(seq $first $last)
do
    does something here
done

对于$first和$last,我需要它的固定长度为5。所以如果输入是1,我需要在前面加上0,这样它就变成了00001。例如,它循环到99999,但长度必须是5。

例如:00002,00042,00212,12312等等。

你知道我该怎么做吗?


当前回答

你可以做得更简单

for i in {00001..99999}; do
  echo $i
done

其他回答

使用printf非常简单

[jaypal:~/Temp] printf "%05d\n" 1
00001
[jaypal:~/Temp] printf "%05d\n" 2
00002

这也会起作用:

for i in {0..9}{0..9}{0..9}{0..9}
do
  echo "$i"
done

使用printf和“%05d”,例如:

printf "%05d" 1

如果序列的结尾有最大的填充长度(例如,如果你想要5个数字,命令是seq 1 10000),那么你可以为seq使用-w标志-它自己添加填充。

seq -w 1 10

会产生

01
02
03
04
05
06
07
08
09
10

你可以做得更简单

for i in {00001..99999}; do
  echo $i
done