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
printf
ermö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.
s
Daraus ergibt sich ... die maximale Anzahl von Zeichen, die aus einer Zeichenfolge für undS
Konvertierungen gedruckt werden können .
Es printf '%.s'
ist also gleichwertig mit printf '%.0s'
, wodurch die Ausgabe des nachfolgenden String-Parameters unterdrückt wird.