variable = $ (Befehl)
variable = $ (Befehl [Option…] Argument1 Argumente2…)
variable = $ (/path/to/command)
ODER
variable = 'Befehl' '
variable = 'Befehl [Option…] Argument1 Argumente2…'
variable = '/path/to/command'
*** HINWEIS: Verwenden Sie keinen Platz vor und nach dem gleichen Zeichen, wenn Sie die obigen Befehle verwenden.
Einzelbefehlsausgabe für eine Variable
Bash -Befehle können ohne Option und Argument für diese Befehle verwendet werden, bei denen diese Teile optional sind. Die folgenden zwei Beispiele zeigen die Verwendung der einfachen Befehlssubstitution.
Beispiel 1:
verprügeln 'Datum' Der Befehl wird verwendet, um das aktuelle Datum und die aktuelle Uhrzeit anzuzeigen. Das folgende Skript speichert die Ausgabe von 'Datum' Befehl in $aktuelles Datum Variable unter Verwendung der Befehlssubstitution.
$ current_date = $ (Datum)
$ echo "Heute ist $ current_date"
Ausgang:
Beispiel#2:
'PWD' Der Befehl zeigt den Pfad des aktuellen Arbeitsverzeichnisses. Das folgende Skript speichert die Ausgabe von 'PWD' Befehl in die Variable, $ current_dir und der Wert dieser Variablen wird durch Verwendung gedruckt 'Echo' Befehl.
$ current_dir = 'pwd'
$ echo "Das aktuelle Verzeichnis ist: $ current_dir"
Ausgang:
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 eine Variable speichern können.
Beispiel#3:
Verprügeln 'Toilette' Der Befehl wird verwendet, um die Gesamtzahl der Zeilen, Wörter und Zeichen jeder Datei zu zählen. Dieser Befehl verwendet -c, -w und -l als Option und Dateiname 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
Führen Sie die folgenden Befehle aus, um die Gesamtzahl der Wörter in der zu zählen und zu speichern Früchte.txt Datei in eine Variable, $ count_words und drucken Sie den Wert mithilfe 'Echo' Befehl.
$ count_words = 'WC -W -Früchte.txt'
$ echo "Gesamtwörter in Früchten.txt ist $ count_words "
Ausgang:
Beispiel Nr. 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 sieben Wochen-Tag-Namen, um das nächste Skript auszuführen.
Wochentag.txt
MontagErstellen Sie eine Bash -Datei mit dem Namen CMDSUB1.Sch mit dem folgenden Skript. In diesem Skript, während Schleife wird verwendet, um den Inhalt von zu lesen Wochentag.txt Dateizeile für Zeile und lesen Sie die ersten drei Zeichen jeder Zeile mithilfe 'schneiden' Befehl. Nach dem Schneiden wird der Zeichenfolgenwert 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 der Urlaub'Wenn die Bedingung wahr ist, druckt sie den Wert von $ tag.
CMDSUB1.Sch
#!/Bin/Bash
Dateiname = 'Wochentag.txt'
Während der Lesenzeile; Tun
tag = 'echo $ line | Schnitt -c 1-3 '
Wenn [$ Day == "Sonne"]
Dann
Echo "Sonntag ist der Urlaub"
anders
Echo $ Day
fi
Erledigt<$filename
Führen Sie das Skript aus.
$ Cat Wochentag.txt
$ bash cmdsub1.Sch
Ausgang:
Verwenden der Befehlssubstitution in der Schleife
Sie können die Ausgabe der Befehlssubstitution in jede Schleifenvariable speichern, die im nächsten Beispiel angezeigt wird.
Beispiel Nr. 5:
Erstellen Sie eine Datei mit dem Namen CMDSUB2.Sch mit dem folgenden Code. Hier, 'ls -d */Der Befehl 'Befehl wird verwendet, um die gesamte Verzeichnisliste aus dem aktuellen Verzeichnis abzurufen. Für die Schleife wird hier verwendet, um jedes Verzeichnis aus der Ausgabe zu lesen und in der Variablen zu speichern $ dirname das wird später gedruckt.
CMDSUB2.Sch
#!/Bin/Bash
für DirName in $ (ls -d */)
Tun
echo "$ dirname"
Erledigt
Führen Sie das Skript aus.
$ bash cmdsub2.Sch
Ausgang:
Verwenden verschachtelter Befehle
Wie Sie mehrere Befehle mit Pipe (|) verwenden können, wird im vorherigen Beispiel angezeigt. Sie können jedoch verschachtelte Befehle in der Befehlssubstitution verwenden, wobei die Ausgabe des ersten Befehls von der Ausgabe des zweiten Befehls abhängt, und es funktioniert gegenüber dem Befehl pipe (|).
Verschachtelte Befehlssyntax:
var = 'command1 \' Befehl \ "
Beispiel Nr. 6:
Zwei Befehle, 'Echo' Und 'WHO'werden in diesem Beispiel als verschachtelter Befehl verwendet. Hier, 'WHODer Befehl wird zunächst ausführen, die die Informationen des Benutzers über den derzeit angemeldeten Benutzer ausdrucken. Die Ausgabe der ''WHO"Befehl wird durch" durch "ausgeführt"Echo'Befehl und die Ausgabe von'Echo'wird in die Variable speichern $ var. Hier die Ausgabe von 'Echo'Befehl hängt von der Ausgabe von' ab 'WHO' Befehl.
$ var = 'echo \' wer \ "
$ echo $ var
Ausgang:
Verwenden von Befehlspfad
Wenn Sie den Pfad des Befehls kennen, können Sie den Befehl ausführen, indem Sie den Befehlspfad angeben, wenn Sie die Befehlssubstitution verwenden. Das folgende Beispiel zeigt die Verwendung des Befehlspfads.
Beispiel Nr. 7:
'Wer bin ich' Der Befehl zeigt den Benutzernamen des aktuell angemeldeten Benutzer. Standardmäßig wird dieser Befehl in gespeichert /usr/Behälter/ Ordner. Führen Sie das folgende Skript aus, um zu ausgeführt. 'Wer bin ich' Befehl Verwenden Sie Pfad und speichern Sie in der Variablen, $ Output, und drucken Sie den Wert von $ Output.
$ output = $ (/usr/bin/whoami)
$ echo $ output
Ausgang:
Verwenden des Befehlszeilenarguments
Sie können das Befehlszeilenargument mit dem Befehl als Argument in der Befehlssubstitution verwenden.
Beispiel#8:
Erstellen Sie eine Bash -Datei mit dem Namen CMDSUB3.Sch mit dem folgenden Skript. ''GrundnameHier wird hier der Befehl verwendet, um den Dateinamen aus dem 2 abzurufennd Befehlszeilenargument und in der Variablen gespeichert, $ Dateiname. Wir kennen die 1st Das Argument der Befehlszeile ist der Name des ausführenden Skripts, das mit 0 $ bezeichnet wird.
#!/Bin/Bash
Dateiname = 'Basenname $ 1'
echo "Der Name der Datei ist $ Dateiname."
Führen Sie das Skript mit dem folgenden Argumentwert aus.
$ bash cmdsub3.SH Desktop/Temp/Hallo.txt
Hier, der Grundname des Weges, Desktop/Temp/Hallo.txt Ist 'Hallo.txt''. Also der Wert der $ Dateiname wird sein Hallo.txt.
Ausgang:
In diesem Tutorial werden verschiedene Verwendungen von Befehlssubstitutionen angezeigt. Wenn Sie mit mehreren Befehlen oder abhängigen Befehlen arbeiten und das Ergebnis vorübergehend speichern müssen, um später einige andere Aufgaben zu erledigen, können Sie diese Funktion in Ihrem Skript verwenden, um die Ausgabe zu erhalten.
Weitere Informationen im Video: