【发布时间】:2012-02-06 01:33:46
【问题描述】:
我需要循环一些值,
for i in $(seq $first $last)
do
does something here
done
对于$first 和$last,我需要它是固定长度5。因此,如果输入是1,我需要在前面添加零,使其变为00001。例如,它会循环到 99999,但长度必须为 5。
例如:00002、00042、00212、012312 等等。
知道我该怎么做吗?
【问题讨论】:
-
一个好的答案可能是:seq - w 1 99999。选项 -w 保持输出长度不变,用 0 填充最短的数字。
-
这里的许多答案推荐
for variable in $(something to generate the numbers); do ...,但是当数字列表很长时,这是有问题的。使用something to generate the numbers | while read -r variable; do ...效率更高。另请参阅mywiki.wooledge.org/DontReadLinesWithFor,其中讨论了从文件等中读取行,但其中一些论点也适用于此。 -
查看如何使用参数扩展进行零填充:askubuntu.com/a/1257316/670392