这是我的代码:
MBR=$( printf %02d ${M} )它简单地将M中的数字格式化为2位数字,零填充数字。这很好,但有时M将包含一个已经为零填充的数字,例如008
在这种情况下,pritnf认为输入数字是八进制,并将008转换为00 (因为八进制中不存在008!)
有没有办法强迫printf将其输入参数作为十进制,而不是八进制?
Ksh版本:(AT&T Research) 93t+ 2010-06-21
印刷版本:(AT&T Research) 2009-02-02
蒂娅。
发布于 2013-08-07 08:30:33
更新到当前的ksh版本:
$ echo $KSH_VERSION
Version JM 93u+ 2012-02-29
$ M=008
$ MBR=$( printf %02d ${M} )
$ echo $MBR
08或者,去掉领先的0's。
$ /usr/bin/printf "%02d\n" $(echo ${M} | sed 's/^00*//')
08或者没有任何外部命令:
$ typeset -LZ M
...
$ M=008
$ MBR=$( printf %02d ${M} )https://stackoverflow.com/questions/18098147
复制相似问题