如何在Bash中增加零填充int

时间:2011-04-07 16:34:41

标签: bash

我有一组循环记录。这个号码的范围是0000001到0089543,这个号码叫做UIDX。

如果我尝试这样的话:

for ((i=0; i< 0089543; i++)); do
    ((UIDX++))
done

计数器增加1,2,3,4而不是我需要的0000001,0000002。

填补那些领先零的最佳方法是什么?

3 个答案:

答案 0 :(得分:11)

使用printf命令格式化前导零的数字,例如:

for ((i = 0; i < 99; ++i)); do printf -v num '%07d' $i; echo $num; done

来自man bash

  

printf [-v var] format [arguments]
  在格式的控制下将格式化的参数写入标准输出。 -v选项使输出分配给变量var而不是打印到标准输出。

答案 1 :(得分:4)

Bash 4有一个很好的解决方法:

for i in {0000000..0089543}; do
    echo $i
done

答案 2 :(得分:2)

您可以使用seq命令,在您的情况下非常有用

seq -w 0089543

根据您的需要删除第一个和最后一个号码,例如,如果您需要到达0089542,那么使用的命令是

seq -w 0089542