GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash printf - So drucken Sie eine Variable in Bash

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.


Linux
  1. Wie drucke ich eine Variable mit Padded Center Alignment?

  2. Wie drucke ich die Zeilen Nummer 15 und 25 von jeweils 50 Zeilen?

  3. Wie überprüfe ich, ob Bash Farben drucken kann?

  4. Wie erlaubt man nur bestimmte Zeichen in einer Bash-Variablen?

  5. Wie teste ich, ob eine Variable in Bash eine Zahl ist?

Bash-Exportvariable

So erhöhen und verringern Sie die Variable in Bash (Zähler)

Bash-printf-Befehl

Bash-Scripting(I)

So setzen Sie die Umgebungsvariable in Bash

Bash - So drucken Sie mehrzeilige Zeichenfolgen (mit '\n') mit printf