%s に . を追加すると、数字が印刷されなくなるのはなぜですか?

%s に . を追加すると、数字が印刷されなくなるのはなぜですか?

Bash のコマンドを学習しようとしていて、これらの例に遭遇しました。 を追加すると、'.'シーケンス番号が印刷されなくなるのはなぜですか?

これは私が望んでいる動作ですが、マニュアルページ

printf "%.sI" $(seq 10)

IIIIIIIIII

printf "%sI" $(seq 10)

1I2I3I4I5I6I7I8I9I10I

答え1

printf文字列にも適用可能な精度を指定できます。

関連する声明printf(3) マニュアルページ:

オプションの精度。ピリオド ('.') の後にオプションの 10 進数字文字列が続きます。

精度が単に「.」として指定されている場合、または精度が負の場合、精度はゼロと見なされます。

sこれにより、変換時に文字列から印刷される最大文字数が示されますS

printf '%.s'と同等でありprintf '%.0s'、後続の文字列パラメータからの出力を抑制します。

関連情報