Ausgabe des BASH-Befehls an die Variable

Bash Command Output Variable

Abhängig von den Anforderungen des Benutzers müssen verschiedene Arten von Bash-Befehlen vom Terminal ausgeführt werden. Wenn der Benutzer einen Befehl vom Terminal aus ausführt, wird die Ausgabe angezeigt, wenn kein Fehler vorliegt, andernfalls wird die Fehlermeldung angezeigt. Manchmal muss die Ausgabe des Befehls zur zukünftigen Verwendung in einer Variablen gespeichert werden. Zu diesem Zweck kann die Shell-Befehlsersetzungsfunktion von bash verwendet werden. In diesem Tutorial wird gezeigt, wie Sie mit dieser Funktion verschiedene Arten von Shell-Befehlen in der Variablen speichern können.

Variable= $(Befehl)
Variable= $(Befehl [Möglichkeit…]Argument1 Argument2 ...)
Variable= $(/Weg/zu/Befehl)

ODER



Variable=``Befehl``
Variable=``Befehl [Möglichkeit…]Argument1 Argument2 ...``
Variable=`/Weg/zu/Befehl``

***Hinweis: Verwenden Sie bei Verwendung der obigen Befehle kein Leerzeichen vor und nach dem Gleichheitszeichen.



Einzelbefehlsausgabe an eine Variable

Bash-Befehle können ohne Option und Argument für die Befehle verwendet werden, bei denen diese Teile optional sind. Die folgenden zwei Beispiele zeigen die Verwendung der einfachen Befehlsersetzung.



Beispiel 1:

Schlag ` Datum` Befehl wird verwendet, um das aktuelle Datum und die aktuelle Uhrzeit anzuzeigen. Das folgende Skript speichert die Ausgabe von ` Datum` Befehl in $ aktuelles Datum variabel durch Befehlsersetzung.

$aktuelles Datum= $(Datum)
$rauswerfen 'Heute ist$aktuelles_datum'

Ausgabe:



Beispiel #2:

`pwd` Befehl zeigt den Pfad des aktuellen Arbeitsverzeichnisses an. Das folgende Skript speichert die Ausgabe von `pwd` Befehl in die Variable, $ aktueller_dir und der Wert dieser Variablen wird gedruckt mit `Echo` Befehl.

$current_dir=``pwd``
$rauswerfen 'Das aktuelle Verzeichnis ist:$ aktueller_dir'

Ausgabe:

Befehl mit Option und Argument

Die Option und das Argument sind für einige Bash-Befehle obligatorisch. Die folgenden Beispiele zeigen, wie Sie die Ausgabe des Befehls mit Option und Argument in einer Variablen speichern können.

Beispiel #3:

Schlag ` Toilette Der Befehl wird verwendet, um die Gesamtzahl der Zeilen, Wörter und Zeichen einer Datei zu zählen. Dieser Befehl verwendet -c, -w und -l als Option und den Dateinamen als Argument, um die Ausgabe zu generieren. Erstellen Sie eine Textdatei mit dem Namen früchte.txt mit den folgenden Daten, um das nächste Skript zu testen.
früchte.txt

früchte.txt
Mango
Orange
Banane
Traube
Guave
Apfel

Führen Sie die folgenden Befehle aus, um die Gesamtzahl der Wörter im zu zählen und zu speichern früchte.txt Datei in eine Variable, $count_words und drucken Sie den Wert mit ` Echo` Befehl.

$count_words=``Toilette -infrüchte.txt``
$rauswerfen 'Gesamtzahl der Wörter in fruit.txt ist$count_words'

Ausgabe:

Beispiel #4:

`schneiden` ist ein weiterer Bash-Befehl, der Option und Argument verwendet, um die Ausgabe zu generieren. Erstellen Sie eine Textdatei mit dem Namen Wochentag.txt mit Namen für sieben Wochentage, um das nächste Skript auszuführen.

Wochentag.txt

Montag
Dienstag
Mittwoch
Donnerstag
Freitag
Samstag
Sonntag

Erstellen Sie eine Bash-Datei mit dem Namen cmdsub1.sh mit folgendem Skript. In diesem Skript während Schleife wird verwendet, um den Inhalt von zu lesen Wochentag.txt Datei Zeile für Zeile und lesen Sie die ersten drei Zeichen jeder Zeile mit ` schneiden` Befehl. Nach dem Schneiden wird der Stringwert in der Variablen gespeichert $Tag . Als nächstes, Wenn die Anweisung verwendet wird, um den Wert von zu überprüfen $Tag ist ' Sonne' oder nicht. Die Ausgabe druckt ‘ Sonntag ist Feiertag ‘ Wenn die Bedingung wahr ist, sonst wird der Wert von ausgegeben $Tag .

cmdsub1.sh

#!/bin/bash
Dateiname='Wochentag.txt'
während lesenLeitung;tun
Tag=``rauswerfen $line | schneiden -C 1-3``
wenn [ $Tag=='Sonne' ]
dann
rauswerfen „Sonntag ist Feiertag“
anders
rauswerfen $Tag
Sein
getan<$Dateiname

Führen Sie das Skript aus.

$KatzeWochentag.txt
$bashcmdsub1.sh

Ausgabe:

Befehlsersetzung in Schleife verwenden

Sie können die Ausgabe der Befehlsersetzung in eine beliebige Schleifenvariable speichern, die im nächsten Beispiel gezeigt wird.

Beispiel#5:

Erstellen Sie eine Datei mit dem Namen cmdsub2.sh mit folgendem Code. Hier, ` ls -d * / ` Befehl wird verwendet, um alle Verzeichnislisten aus dem aktuellen Verzeichnis abzurufen. Die For-Schleife wird hier verwendet, um jedes Verzeichnis aus der Ausgabe zu lesen und in der Variablen zu speichern $dirname die später gedruckt wird.

cmdsub2.sh

#!/bin/bash
zum dirname in$(ls -D * /)
tun
rauswerfen '$dirname'
getan

Führen Sie das Skript aus.

$bashcmdsub2.sh

Ausgabe:

Verschachtelte Befehle verwenden

Wie Sie mehrere Befehle mit Pipe(|) verwenden können, wird im vorherigen Beispiel gezeigt. Sie können jedoch verschachtelte Befehle bei der Befehlsersetzung verwenden, bei denen die Ausgabe des ersten Befehls von der Ausgabe des zweiten Befehls abhängt und das Gegenteil des Pipe(|)-Befehls funktioniert.

Verschachtelte Befehlssyntax:

wo=``Befehl1 ``Befehl``

Beispiel#6:

Zwei Befehle, ` rauswerfen ` und ` Wer ` werden in diesem Beispiel als verschachtelter Befehl verwendet. Hier, ` Wer `-Befehl wird zuerst ausgeführt, der die Benutzerinformationen des aktuell angemeldeten Benutzers ausgibt. Die Ausgabe des ` Wer `-Befehl wird von ` . ausgeführt rauswerfen `-Befehl und die Ausgabe von ` rauswerfen ` wird in der Variablen gespeichert $ var . Hier ist die Ausgabe von ` rauswerfen `-Befehl hängt von der Ausgabe von ` . ab Wer ` Befehl.

$wo=``rauswerfen``Wer``
$rauswerfen $ var

Ausgabe:

Befehlspfad verwenden

Wenn Sie den Pfad des Befehls kennen, können Sie den Befehl ausführen, indem Sie den Befehlspfad angeben, wenn Sie die Befehlsersetzung verwenden. Das folgende Beispiel zeigt die Verwendung des Befehlspfads.

Beispiel#7:

`whoami` Befehl zeigt den Benutzernamen des aktuell angemeldeten Benutzers an. Standardmäßig wird dieser Befehl gespeichert in / usr/ bin/ Mappe. Führen Sie das folgende Skript aus, um ` . auszuführen Whoami` Befehl mit Pfad und in der Variablen speichern, $Ausgabe, und drucke den Wert von $Ausgabe .

$Ausgang= $(/usr/bin/Wer bin ich)
$rauswerfen $Ausgabe

Ausgabe:

Befehlszeilenargument verwenden

Sie können das Befehlszeilenargument mit dem Befehl als Argument in der Befehlsersetzung verwenden.

Beispiel#8:

Erstellen Sie eine Bash-Datei mit dem Namen cmdsub3.sh mit folgendem Skript. ` Basisname `-Befehl wird hier verwendet, um den Dateinamen aus der 2 abzurufenndBefehlszeilenargument und in der Variablen gespeichert, $Dateiname . Wir kennen die 1NSBefehlszeilenargument ist der Name des ausführenden Skripts, der mit $0 bezeichnet wird.

#!/bin/bash
Dateiname=``Basisname $ 1``
rauswerfen 'Der Name der Datei ist$Dateiname. '

Führen Sie das Skript mit dem folgenden Argumentwert aus.

$bashcmdsub3.sh Desktop/temp/hallo.txt

Hier, der basisname des Weges, Desktop/temp/hello.txt ist ' hallo.txt ’. Der Wert von $Dateiname wird sein hallo.txt .

Ausgabe:

Abschluss:

In diesem Tutorial werden verschiedene Verwendungen von Befehlsersetzungen gezeigt. Wenn Sie mit mehreren Befehlen oder abhängigen Befehlen arbeiten und das Ergebnis temporär speichern müssen, um später andere Aufgaben zu erledigen, können Sie diese Funktion in Ihrem Skript verwenden, um die Ausgabe zu erhalten.

Mehr Infos im Video: