这是我的代码:
MBR=$( printf %02d ${M} )
只是将M
中的数字格式化为2位数,零填充数字。
这样可以正常工作,但有时M
将包含一个已填零的数字,例如008
在这种情况下,pritnf认为输入数字是八进制并将008
转换为00
(因为数字008在八进制中不存在!)
有没有办法强制printf
将其输入参数作为十进制而不是八进制?
Ksh版本:( AT& T Research)93t + 2010-06-21
printf版本:(AT& T Research)2009-02-02
TIA。
答案 0 :(得分:1)
更新为当前的ksh版本:
$ echo $KSH_VERSION
Version JM 93u+ 2012-02-29
$ M=008
$ MBR=$( printf %02d ${M} )
$ echo $MBR
08
或者,剥离前导0
的
$ /usr/bin/printf "%02d\n" $(echo ${M} | sed 's/^00*//')
08
或没有任何外部命令:
$ typeset -LZ M
...
$ M=008
$ MBR=$( printf %02d ${M} )