Bash 在printf中使用。*

Bash 在printf中使用。*,bash,unix,printf,Bash,Unix,Printf,我正在尝试更改其他人的代码。谁能给我解释一下这行代码吗 xs=`printf "%.*d" 3 $x` $x是循环变量,我知道。它显示的是一个整数,填充0,大小为3个字符 $ x=4 $ printf "%.*d" 3 $x 004 $ x=12 $ printf "%.*d" 3 $x 012 $ x=9999 $ printf "%.*d" 3 $x 9999 它显示的是一个整数,填充0,大小为3个字符 $ x=4 $ printf "%.*d" 3 $x 004 $ x=12 $

我正在尝试更改其他人的代码。谁能给我解释一下这行代码吗

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

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

它显示的是一个整数,填充0,大小为3个字符

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

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

$ x=9999
$ printf "%.*d" 3 $x
9999

它显示的是一个整数,填充0,大小为3个字符

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

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

$ x=9999
$ printf "%.*d" 3 $x
9999

*
是一种填充格式的方法。发件人:

浮点数或双倍数的精度可以通过 使用,其中是精度的位数。 如果是星号(*),则从 要打印的数字之前的参数,如(prints 43000000000):

printf“%.*f\n”10 4,3

所以说

xs=`printf "%.*d" 3 $x`
$xs
以三位精度获取存储在
$x
中的数字。另请注意,并引用参数:

xs=$(printf "%.*d" 3 "$x")
参见一些示例:

$ printf "%.*d\n" 3 1
001
$ printf "%.*d\n" 3 1234
1234

有一个更好的参考,感谢Aaron Digulla在评论中指出:

精度

可选精度,形式为句点('.')后跟 可选的十进制数字字符串。而不是十进制数字字符串1 可以写“*”或“*m$”(对于某些十进制整数m)来指定 精度在下一个参数或第m个参数中给出, 分别,必须是int.(…)类型


*
是一种填充格式的方法。发件人:

浮点数或双倍数的精度可以通过 使用,其中是精度的位数。 如果是星号(*),则从 要打印的数字之前的参数,如(prints 43000000000):

printf“%.*f\n”10 4,3

所以说

xs=`printf "%.*d" 3 $x`
$xs
以三位精度获取存储在
$x
中的数字。另请注意,并引用参数:

xs=$(printf "%.*d" 3 "$x")
参见一些示例:

$ printf "%.*d\n" 3 1
001
$ printf "%.*d\n" 3 1234
1234

有一个更好的参考,感谢Aaron Digulla在评论中指出:

精度

可选精度,形式为句点('.')后跟 可选的十进制数字字符串。而不是十进制数字字符串1 可以写“*”或“*m$”(对于某些十进制整数m)来指定 精度在下一个参数或第m个参数中给出, 分别,必须是int.(…)类型


在本例中,不是精度(逗号后面)而是填充。@AaronDigulla您是对的。但是,我找不到正确的文档参考(),事实上,你是对的。解释它<代码>*将是“宽度”,但
*
称为“精度”。它通常用于浮点数,但也适用于整数:“这为d、i、o、u、x和x转换提供了最小位数[…]”,
man printf
不一定是这里使用的最佳资源,因为一个人的外壳可能会提供比内置版本功能更多/更好的printf版本。因此,
help printf
可以说是更好的资源;bash黑客页面也很棒。在这种情况下,不是精确性(逗号后),而是填充。@Aarondigula你是对的。但是,我找不到正确的文档参考(),事实上,你是对的。解释它<代码>*将是“宽度”,但
*
称为“精度”。它通常用于浮点数,但也适用于整数:“这为d、i、o、u、x和x转换提供了最小位数[…]”,
man printf
不一定是这里使用的最佳资源,因为一个人的外壳可能会提供比内置版本功能更多/更好的printf版本。因此,
help printf
可以说是更好的资源;bash黑客页面也很棒。旁白:如果这是现代bash,
printf-vxs'.*d'3“$x”
将是更有效的编写方式,避免子shell的性能开销。旁白:如果这是现代bash,
printf-vxs'.*d'3“$x”
将是更有效的编写方式,避免子shell的性能开销。