Einführung
Die Bash printf
Der Befehl ist ein Werkzeug zum Erstellen einer formatierten Ausgabe. Es ist eine eingebaute Shell, ähnlich wie printf()
funktionieren in C/C++, Java, PHP und anderen Programmiersprachen. Der Befehl ermöglicht es Ihnen, formatierten Text und Variablen in der Standardausgabe auszugeben.
Verwenden Sie printf
in Bash-Skripten, um die Effizienz und Wiederverwendbarkeit beim Programmieren zu steigern.
In diesem Tutorial lernen Sie die Verwendung von printf
Befehl in Linux, um Variablen zu drucken und die Ausgabe zu formatieren.
Voraussetzungen
- Eine Maschine, auf der Linux ausgeführt wird
- Zugriff auf ein Terminal (Strg + Alt + T )
Bash printf-Syntax
Der printf
Der Befehl akzeptiert die folgende Syntax:
printf [-v var] [format specifiers] [arguments]
[-v var]
Das optionale -v
Flag weist die Ausgabe [var]
zu Variable, anstatt sie in der Standardausgabe auszugeben.
[format specifiers]
Formatbezeichner sind Zeichenfolgen, die die Methoden zum Formatieren von Bezeichnern bestimmen. Der folgende Abschnitt enthält eine Liste akzeptierter Spezifizierer.
[arguments]
Argumente können beliebige Werte oder Variablen und die [format specifiers]
sein zeigen Sie auf die [arguments]
. Wenn es mehr Argumente als Formatbezeichner gibt, wird der Formatstring wiederverwendet, bis er das letzte Argument interpretiert.
Wenn es weniger Formatbezeichner als Argumente gibt, werden Zahlenformate auf Null gesetzt (0
), während Zeichenfolgenformate auf null
gesetzt sind (leer).
printf-Spezifizierer
Die folgende Tabelle zeigt allgemeine printf
Formatbezeichner und ihre Beschreibungen:
Formatbezeichner | Beschreibung |
---|---|
%c | Behandeln Sie die Argumente als einzelnes Zeichen. |
%d | Behandeln Sie die Eingabe als Dezimalzahl (Ganzzahl) (Basis 10). |
%e | Behandelt die Eingabe als eine exponentielle Gleitkommazahl. |
%f | Behandeln Sie die Eingabe als Fließkommazahl. |
%i | Behandeln Sie die Eingabe als Ganzzahl (Basis 10). |
%o | Behandelt die Eingabe als Oktalzahl (Basis 8). |
%s | Behandeln Sie die Eingabe als Zeichenfolge. |
%u | Behandeln Sie die Eingabe als vorzeichenlose Dezimalzahl (Ganzzahl). |
%x | Behandelt die Eingabe als Hexadezimalzahl (Basis 16). |
%% | Ein Prozentzeichen drucken. |
%Wd | Drucken Sie das W ganze Zahl X Ziffern breit. |
%(format)T | Gibt eine Datum-Uhrzeit-Zeichenfolge aus, die sich aus der Verwendung von format als Formatzeichenfolge für strftime ergibt . Das entsprechende Argument kann die Anzahl der Sekunden seit Epoch (1. Januar 1970, 00:00) -1 sein (die aktuelle Zeit) oder -2 (Shell-Startzeit). Wenn Sie kein Argument angeben, wird die aktuelle Zeit als Standardwert verwendet. |
\% | Ein Prozentzeichen drucken. |
\n | Gibt einen newline aus Zeichen. |
\t | Drucken Sie eine tab Zeichen. |
Einige Formatbezeichner akzeptieren Formatmodifikatoren, die ihre Aktionen ändern. Geben Sie die Modifikatoren zwischen %
ein Zeichen und das Zeichen, das das Format angibt.
Verfügbare Formatmodifikatoren sind:
<N>
. Geben Sie eine Zahl ein, die eine minimale Feldbreite angibt. Wenn der Ausgabetext kürzer ist, wird er mit Leerzeichen aufgefüllt. Wenn der Text länger ist, wird das Feld erweitert..
(Punkt) . Bei Verwendung mit einem Feldbreitenmodifikator wird das Feld nicht für längeren Text erweitert. Stattdessen wird der Text abgeschnitten.-
. Richtet den gedruckten Text linksbündig aus. Die Standardausrichtung ist rechts.0
. Füllt die Zahlen mit Nullen anstelle von Leerzeichen auf.<space>
. Füllt eine positive Zahl mit einem Leerzeichen und eine negative Zahl mit einem Minus auf (-
).+
. Druckt alle Zahlen signiert (+
für positiv-
für negativ).'
. Wendet bei Dezimalkonvertierungen das Tausender-Gruppierungstrennzeichen auf den ganzzahligen Teil der Ausgabe gemäß der aktuellen LC_NUMERIC an Datei.
Bash printf-Beispiele
Die folgenden Beispiele demonstrieren häufige Anwendungsfälle und verschiedene Arten der Formatierung der Ausgabe mit printf
.
Während der Befehl Variablen im Terminal ausgeben kann, ist es vorteilhafter, ihn in Bash-Skripten zu verwenden, da sie die Wiederverwendung von Code ermöglichen und die Automatisierung erleichtern.
Separieren Sie die Ausgabe mit einem Newline-Zeichen
Im Gegensatz zu echo
, mit printf
einen String oder eine Variable ohne Formatbezeichner auszugeben, gibt den unformatierten Text in einer einzelnen Zeile aus. Um ein Zeilenumbruchzeichen hinzuzufügen und die Einträge zu trennen, geben Sie \n
an Formatbezeichner:
Ein Newline-Zeichen trennt nun die Druckausgabe.
Mehrere Variablen drucken
Verwenden Sie printf
um mehrere Variablen in der Standardausgabe auszugeben. Führen Sie die folgenden Schritte aus:
1. Öffnen Sie das Terminal (Strg + Alt + T ) und erstellen Sie ein Bash-Skript mit einem Texteditor wie vi/vim :
vi script.sh
2. Geben Sie die folgenden Zeilen ein:
#!/bin/bash
printf "Enter your name:\n"
read name
printf "Enter your surname:\n"
read surname
printf 'Welcome: %s\n' "$name $surname"
Der %s
im Formatstring zeigt auf die in den vorherigen Zeilen definierten Variablen, während \n
weist printf
an um ein Zeilenumbruchzeichen hinzuzufügen.
3. Speichern Sie das Skript und beenden Sie vi
durch Eingabe von:
:wq
4. Führen Sie das Skript aus:
bash script.sh
5. Geben Sie die angeforderten Werte für die beiden Variablen ein und prüfen Sie das Ergebnis:
Der printf
Der Befehl speichert die Eingabe in den beiden Variablen und gibt die Variablen dann in der Standardausgabe aus.
Variable in einer Scheintabelle drucken
Fügen Sie automatisch dynamisches Padding hinzu oder ändern Sie die variable Ausgabeausrichtung mit printf
. Führen Sie die folgenden Schritte aus, um eine Variable in einer Scheintabelle auszugeben:
1. Erstellen Sie eine Skriptdatei:
vi table.sh
2. Geben Sie die folgenden Zeilen ein und speichern Sie das Skript:
#!/bin/bash
var='hello'
printf '|%10s|\n' "$var"
Der %10
stellt sicher, dass die Pipe-Symbole zehn Zeichen enthalten, und füllt die Variablenausgabe mit Leerzeichen in dieser Länge auf. Die s
behandelt die Eingabevariable als String.
3. Führen Sie das Skript aus und prüfen Sie das Ergebnis:
bash table.sh
Der Befehl gibt die in Pipe-Symbole eingeschlossene Variable aus und richtet sie standardmäßig rechtsbündig aus. Um die Ausgabe auf der linken Seite auszurichten, fügen Sie -
hinzu Modifikator nach dem %
Zeichen im Formatstring:
#!/bin/bash
var='hello'
printf '|%-10s|\n' "$var"
Dezimalpunkte hinzufügen
Verwenden Sie printf
mit dem %f
Formatbezeichner, um die Eingabe als Gleitkommazahl zu behandeln und die Genauigkeit von zwei Dezimalstellen hinzuzufügen. Führen Sie die folgenden Schritte aus:
1. Erstellen Sie ein Bash-Skript:
vi precision.sh
2. Geben Sie die folgenden Zeilen ein und speichern Sie das Skript:
#!/bin/bash
printf "Enter a decimal number:\n"
read number
printf "%5.2f\n" "$number"
3. Führen Sie das Skript aus:
bash precision.sh
Die Ausgabe gibt die Variable als auf zwei Dezimalstellen gerundete Fließkommazahl aus.
Daten in einer Variablen speichern
Verwenden Sie das -v
Flag mit printf
um eine Shell-Variable zuzuweisen, um die Daten zu speichern, anstatt sie in der Standardausgabe auszugeben.
Führen Sie die folgenden Schritte aus:
1. Erstellen Sie ein Bash-Skript:
vi variable.sh
2. Geben Sie die folgenden Zeilen ein und speichern Sie das Skript:
#!/bin/bash
printf -v var 'Welcome'
printf '%s\n' "$var"
3. Führen Sie das Skript aus:
bash variable.sh
Die Ausgabe gibt die gespeicherten Variableninhalte aus.
Hexadezimalzahlen umwandeln
Der %d
Formatbezeichner weist printf
an um die Eingabe als Dezimalzahl (Integer) zu behandeln. Verwenden Sie den Bezeichner, um ein Skript zu erstellen, das Hexadezimalzahlen in Dezimalzahlen umwandelt.
Führen Sie die folgenden Schritte aus:
1. Erstellen Sie ein Bash-Skript:
vi convert.sh
2. Geben Sie die folgenden Zeilen ein und speichern Sie das Skript:
#!/bin/bash
printf 'Enter a hexadecimal number:\n'
read number
printf "%d\n" "$number"
3. Führen Sie das Skript aus:
bash convert.sh
Das Skript wandelt die eingegebene Hexadezimalzahl in eine Dezimalzahl um.
Dezimalzahlen in Oktalzahlen umwandeln
Verwenden Sie den %o
Formatbezeichner zum Konvertieren von Dezimalzahlen in Oktalzahlen. Führen Sie die folgenden Schritte aus:
1. Erstellen Sie ein Skript:
vi octal.sh
2. Geben Sie die folgenden Zeilen ein und speichern Sie das Skript:
#!/bin/bash
printf "Enter a decimal number:\n"
read number
printf "The octal number of "$number" is %o\n" "$number"
3. Führen Sie das Skript aus:
bash octal.sh
Das Skript wandelt den eingegebenen Dezimalwert in einen Oktalwert um.
Druckdatum
Erstellen Sie ein Skript, das printf
verwendet um das aktuelle Datum anzuzeigen. Führen Sie die folgenden Schritte aus:
1. Erstellen Sie ein Skript:
vi datetime.sh
2. Geben Sie die folgenden Zeilen ein und speichern Sie das Skript:
#!/bin/bash
printf 'Today is %(%F)T\n' -1
Der %F
behandelt die Eingabe als Fließkommazahl, während -1
gibt das aktuelle Datum an.
3. Führen Sie das Skript aus, um zu prüfen, ob es funktioniert:
bash datetime.sh
Die Ausgabe gibt das aktuelle Datum und die Uhrzeit an.
Kommas zu Tausenden hinzufügen
Verwenden Sie bei Zahlen den '
Modifikator, um die Ausgabe lesbarer zu machen, indem Kommas hinzugefügt werden, um Tausende zu bezeichnen. Führen Sie die folgenden Schritte aus:
1. Erstellen Sie ein Bash-Skript:
vi decimals.sh
2. Geben Sie die folgenden Zeilen ein:
#!/bin/bash
printf "Enter a number:\n"
read number
printf "%'d\n" $number
3. Führen Sie das Skript aus:
bash decimals.sh
Nach Eingabe einer Zahl verwendet das Skript printf
um die Kommas automatisch zum Eingabewert hinzuzufügen.
Zeichen-ASCII-Code erhalten
Erstellen Sie ein Skript, das printf
verwendet um das ASCII eines eingegebenen Zeichens auszugeben Wert. Führen Sie die folgenden Schritte aus:
1. Erstellen Sie ein Skript:
vi character.sh
2. Geben Sie die folgenden Zeilen ein und speichern Sie dann das Skript:
#!/bin/bash
printf "Enter a character to get character code:\n"
read character
printf "%d\n" "'$character"
3. Führen Sie das Skript aus und testen Sie, ob es funktioniert:
bash character.sh
Das Skript gibt den ASCII-Wert des Eingabezeichens aus.