Unix KSH计数器 - 在递增时保留前导0

时间:2015-02-10 20:43:21

标签: shell unix ksh

我需要在循环中递增计数器。要求是这样的:

$ echo $x
0000001
$ x=$((x+1))
$ echo $x
2

但是,柜台应该是这样的:

0000001
0000002
0000003
0000004
0000005
0000006
0000007
0000008
0000009
0000010
0000011

2 个答案:

答案 0 :(得分:2)

您想要typeset -Z

来自文档:

  

如果第一个非空白字符是数字且未设置-L选项,则右对齐并填充前导零。如果还设置了-L选项,则删除前导零。如果n非零,则定义字段的宽度,否则由第一次赋值的宽度确定。

$ typeset -Z 6 x
$ x=1
$ echo $x
>> 000001
$ (( x ++ ))
$ echo $x
>> 000002

答案 1 :(得分:1)

试试这个:

$ echo $x
0000001
$ x=$((x+1))
$ printf "%06d" $(echo "$x" | bc)
0000002

使用printf,您可以格式化输出。现在,它也适用于前导零