在Mac High Sierra的终端上使用Bash。
所以这段代码应该确保一个三位数字。我用printf做了这个。我创建了bash文件。这将获取一个数字,然后将其转换为三位数并打印。但它确实有一些奇怪的东西,我想知道为什么。
如果输入正常数字1,2,3 ......一切正常。 如果输入三位数字001 ... 007一切正常。
示例:
到目前为止一切顺利。
现在这就变得很奇怪了。
number=$1
digit=$(printf "%03d" $number)
echo num: $number
echo digit: $digit
答案 0 :(得分:0)
当您输入带有前导0
的数字时,它会将其视为八进制(即基数为8)的数字(因此010
- > 8
十进制数。它将以十进制打印,并且您的格式arg表示打印宽度为3(因此它打印008
)。
009
打印000
的原因是因为9
不是八进制中的数字(仅0-7
),所以该数字只是被忽略,因此它会打印{{ 1}}宽度为3(0
)。