Warum verhindert das Hinzufügen eines . in %s das Drucken der Nummer?

Warum verhindert das Hinzufügen eines . in %s das Drucken der Nummer?

Ich versuche, Befehle in Bash zu lernen und bin auf diese Beispiele gestoßen. Warum verhindert das Hinzufügen von a, dass '.'die Sequenznummer gedruckt wird?

Das ist das Verhalten, das ich will, aber ich konnte nichts finden aufdie Manpage.

printf "%.sI" $(seq 10)

IIIIIIIIII

printf "%sI" $(seq 10)

1I2I3I4I5I6I7I8I9I10I

Antwort1

printfermöglicht Ihnen, eine Genauigkeit anzugeben, die auch für Zeichenfolgen gilt:

Relevante Aussagen aus demprintf(3) - Hilfeseite:

Eine optionale Genauigkeit in Form eines Punkts ('.'), gefolgt von einer optionalen Dezimalziffernfolge.

Wenn die Genauigkeit nur als „.“ angegeben ist oder die Genauigkeit negativ ist, wird der Wert als Null angenommen.

sDaraus ergibt sich ... die maximale Anzahl von Zeichen, die aus einer Zeichenfolge für und SKonvertierungen gedruckt werden können .

Es printf '%.s'ist also gleichwertig mit printf '%.0s', wodurch die Ausgabe des nachfolgenden String-Parameters unterdrückt wird.

verwandte Informationen