我需要循环一些值,

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

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

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

你知道我该怎么做吗?


当前回答

我用比我需要的更多的数字(零)来填充输出,然后使用tail来只使用我正在寻找的数字数量。注意,你必须在tail中使用'6'来获得最后5位数字:)

for i in $(seq 1 10)
do
RESULT=$(echo 00000$i | tail -c 6)
echo $RESULT
done

其他回答

使用printf非常简单

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

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

printf "%05d" 1

如果你想要N个数字,加10^N并删除第一个数字。

for (( num=100; num<=105; num++ ))
do
  echo ${num:1:3}
done

输出:

01
02
03
04
05

这也会起作用:

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

1)。创建从1到1000的数字序列“seq”,并固定宽度“-w”(宽度由结束数字的长度决定,在本例中为1000的4位数字)。

2)。另外,使用'sed -n'选择您想要的数字(在本例中,我们选择数字1-100)。

3)。'echo'输出每个数字。数字存储在变量“i”中,使用“$”访问。

优点:这段代码非常干净。

缺点:'seq'不是所有Linux系统的本机(据我所知)

for i in `seq -w 1 1000 | sed -n '1,100p'`; 
do 
    echo $i; 
done