为什么添加一个 . 在 %s 中阻止打印数字?

InQ*_*ive 5 bash

我正在尝试学习 Bash 中的命令并遇到了这些示例。为什么添加 a 会'.'阻止序列号被打印?

这是我想要的行为,但我在手册页上找不到任何内容。

printf "%.sI" $(seq 10)
Run Code Online (Sandbox Code Playgroud)

IIIIIIIIII

printf "%sI" $(seq 10)
Run Code Online (Sandbox Code Playgroud)

1I2I3I4I5I6I7I8I9I10I

Hax*_*iel 15

printf 允许您指定甚至适用于字符串的精度:

printf(3) 联机帮助页中的相关语句:

可选精度,形式为句点 ('.') 后跟可选的十进制数字字符串。

如果精度仅以“.”形式给出,或者精度为负,则精度将被视为零。

这给出了...从字符串中打印的最大字符数sS转换。

Soprintf '%.s'等价于printf '%.0s',它会抑制来自后续字符串参数的输出。