我有一组循环记录。这个号码的范围是0000001到0089543,这个号码叫做UIDX。
如果我尝试这样的话:
for ((i=0; i< 0089543; i++)); do
((UIDX++))
done
计数器增加1,2,3,4而不是我需要的0000001,0000002。
填补那些领先零的最佳方法是什么?
答案 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