Übersicht
`printf` steuert die Ausgabe präzise mithilfe einer Formatzeichenkette und von Argumenten. Dies wird in Skripten für verschiedene Zwecke wie die Erstellung von Berichten und die Formatierung von Protokollnachrichten verwendet.
Hauptmerkmale
- Unterstützung für verschiedene Formatbezeichner (%s, %d, %f usw.)
- Unterstützung für Escape-Sequenzen (\n, \t, \x usw.)
- Ausgabe nach Datentyp wie Ganzzahl, Gleitkommazahl, Zeichenkette
- Steuerung von Ausgabebreite, Genauigkeit und Ausrichtung möglich
Wichtige Optionen (Formatbezeichner und Escape-Sequenzen)
Der Befehl `printf` steuert seine Funktion nicht durch traditionelle Optionen, die mit `-` beginnen, sondern durch 'Formatbezeichner' und 'Escape-Sequenzen', die in der Formatzeichenkette enthalten sind. Hier sind einige häufig verwendete:
Formatbezeichner
Escape-Sequenzen
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`printf` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele
Beispiele für die Verwendung von `printf` mit verschiedenen Formatbezeichnern und Escape-Sequenzen.
Einfache Zeichenkettenausgabe
printf "Hello, World!\n"
Gibt eine einfache Zeichenkette aus und fügt einen Zeilenumbruch hinzu.
Gemischte Ausgabe von Ganzzahlen und Zeichenketten
printf "Name: %s, Alter: %d Jahre\n" "Hong Gildong" 30
Formatiert und gibt Ganzzahlen und Zeichenketten zusammen aus.
Festlegen der Genauigkeit von Gleitkommazahlen
printf "Pi: %.2f\n" 3.141592
Gibt eine Gleitkommazahl mit zwei Dezimalstellen aus.
Ausgabebreite und Ausrichtung
printf "%-10s %5d\n" "Produktname" 123
Richtet eine Zeichenkette linksbündig in 10 Spalten aus und eine Ganzzahl rechtsbündig in 5 Spalten.
Hexadezimal- und Oktalausgabe
printf "Dezimal: %d, Hexadezimal: %x, Oktal: %o\n" 255 255 255
Gibt Zahlen in Hexadezimal- und Oktalform aus.
Verwendung mit Variablen
NAME="Kim Cheolsu"
SCORE=95
printf "Schüler: %s, Punktzahl: %d Punkte\n" "$NAME" "$SCORE"
Verwendet Shell-Variablen als Argumente für `printf` zur Ausgabe.
Tipps & Hinweise
Tipps und zu beachtende Punkte für die effektive Nutzung von `printf`.
Unterschied zu `echo`
`echo` wird hauptsächlich für einfache Zeichenkettenausgaben verwendet und ist bei der Interpretation von Escape-Sequenzen (erfordert die Option `-e`) oder der Formatierung eingeschränkt. `printf` hingegen kann das Ausgabeformat über Formatbezeichner präzise steuern und interpretiert Escape-Sequenzen immer.
- Escape-Sequenzen: `printf` interpretiert Escape-Sequenzen immer. `echo` benötigt die Option `-e`.
- Formatierung: `printf` unterstützt verschiedene Formatbezeichner wie `%s`, `%d` usw., um das Ausgabeformat fein abzustimmen. `echo` hat diese Funktionalität nicht.
- Zeilenumbruch: `echo` fügt standardmäßig nach der Ausgabe einen Zeilenumbruch hinzu, während `printf` explizit `\n` angeben muss.
Übereinstimmung von Formatzeichenkette und Argumenten
Die Anzahl der Formatbezeichner in der Formatzeichenkette muss mit der Anzahl der bereitgestellten Argumente übereinstimmen. Wenn Argumente fehlen, können je nach Shell Standardwerte (z. B. 0 oder eine leere Zeichenkette) verwendet werden, und wenn zu viele Argumente vorhanden sind, werden die überschüssigen Argumente ignoriert. Dies kann zu unerwarteten Ergebnissen führen, daher ist Vorsicht geboten.
Vorsicht bei der Verwendung von Escape-Sequenzen
Insbesondere zur Ausgabe eines `\`-Zeichens müssen Sie es zweimal als `\\` angeben. Da die Shell möglicherweise zuerst den Backslash interpretiert, ist möglicherweise eine Escapierung erforderlich, bevor er an `printf` übergeben wird. Im Allgemeinen ist es sicher, die Formatzeichenkette in doppelte Anführungszeichen (`"`) zu setzen.