在printf中使用



我正在尝试更改别人的代码。谁能向我解释这条代码?

xs=`printf "%.*d" 3 $x`

$x是循环变量,我确实知道。

.*是一种填充格式的方法。来自bash-backers#the printf命令:

可以通过 使用。 如果是星号(*),则从 在要打印的数字之前的参数(如打印) 4,3000000000):

printf"%。*f n" 10 4,3

这样说

xs=`printf "%.*d" 3 $x`

$xs以三位精度存储在$x中的数字。还请注意,最好使用$()并引用参数:

xs=$(printf "%.*d" 3 "$x")

请参阅一些示例:

$ printf "%.*dn" 3 1
001
$ printf "%.*dn" 3 1234
1234

man printf有更好的参考,这要归功于Aaron Digulla在评论中指向它:

精度

可选的精度,以周期('。')的形式 可选的十进制数字字符串。而不是十进制数字字符串 可以写入"*"或"*m $"(对于某些小数点内M $)以指定 精度是在下一个参数中给出的 分别必须是INT类型。(...)

它显示一个带有3个字符的0个填充的整数。

$ x=4
$ printf "%.*d" 3 $x
004
$ x=12
$ printf "%.*d" 3 $x
012
$ x=9999
$ printf "%.*d" 3 $x
9999

相关内容

  • 没有找到相关文章