首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ksh + printf:强制输入参数为十进制,而不是八进制

问ksh + printf:强制输入参数为十进制,而不是八进制
EN

Stack Overflow用户
提问于 2013-08-07 08:16:05
回答 1查看 401关注 0票数 0

这是我的代码:

代码语言:javascript
复制
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

蒂娅。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-07 08:30:33

更新到当前的ksh版本:

代码语言:javascript
复制
$ echo $KSH_VERSION
Version JM 93u+ 2012-02-29
$ M=008
$ MBR=$( printf %02d ${M} )
$ echo $MBR                
08

或者,去掉领先的0's。

代码语言:javascript
复制
$ /usr/bin/printf "%02d\n" $(echo ${M} | sed 's/^00*//')
08

或者没有任何外部命令:

代码语言:javascript
复制
$ typeset -LZ M
...
$ M=008
$ MBR=$( printf %02d ${M} )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18098147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档