Bash Command Expansion

Bash Command Expansion

Wenn Sie mit Befehlen in Bash arbeiten, erreichen Sie einen Punkt, an dem Sie die Ausgabe eines bestimmten Befehls als Wert für eine bestimmte Variable verwenden müssen. Die Befehlserweiterung ist ein Begriff, auf den man sich bezieht Befehlssubstitution wobei die Ausgabe eines bestimmten Befehls anstelle des Befehls verwendet wird. Im Idealfall wird der Befehl ausgeführt und sein Wert ersetzt den Befehl und in den meisten Fällen wird er bei der Arbeit mit Variablen verwendet.

Die Expansion des Bash -Befehls ist praktisch, wenn Sie eine bestimmte Variable verwenden müssen, deren Werte noch nicht bekannt sind, sofern der Befehl nicht zuerst ausgeführt wird. Dieser Leitfaden deckt verschiedene Beispiele ab, um zu verstehen, wie man mit Bash Command Substitution arbeitet.

So verwenden Sie die Expansion des Bash -Befehls

Die Befehlserweiterung kann auf zwei Arten verwendet werden.

Sie können es wie in der folgenden Syntax einschließen:

$ (Befehl)

Alternativ können Sie verwenden Backticks, Wie nachfolgend dargestellt.

'Befehl'

Wenn Sie die Bash -Substitution in einem Skript verwenden, ersetzt die Ausgabe des Befehls den Befehl, wenn er ausgeführt wird.

Wenn Sie beispielsweise einen Befehl schreiben müssen, der das aktuelle Datum und die Uhrzeit und die Verfügbarkeit bei der Ausführung des Skripts druckt, können wir ein Skript wie unten gezeigt schreiben lassen.

Wir haben eine Variable im Skript erstellt, aber ihr Wert hängt von der Ausgabe des Befehls ab. Außerdem drucken wir den Wert der deklarierten Variablen mit der Echo Befehl. Das ist ein Fall von Bash Command Substitution. Lassen Sie uns den Befehl ausführen und sehen, wie er sich verhält.

Beachten Sie, dass alle nachverfolgenden Linien beim Drucken der Ausgabe gelöscht werden, wenn Sie die Befehlssubstitution verwenden. Lassen Sie uns zum Beispiel die verwenden SEQ -Befehl Werte von 1 bis 10 drucken und zwei Werte überspringen. Wenn wir den folgenden Befehl ausführen, werden wir feststellen, dass jede neue Zeile berücksichtigt wird.

$ SEQ 1 2 10

Wenn Sie jedoch die Befehlssubstitution für denselben Befehl verwenden, ist die Ausgabe unterschiedlich, wenn die neuen Zeilen gelöscht werden.

Bash -Befehlserweiterung auf Schleifen

Wenn Sie ein bestimmtes Skript haben, das eine bestimmte Aufgabe ausführen sollte, die Werte dieser Variablen jedoch von der Ausgabe des Befehls abhängen, können Sie die Bash -Erweiterung verwenden. Wenn Sie beispielsweise eine Datei mit den Namen von IP -Adressen enthielten, können Sie a ausführen Für Schleife um eine bestimmte Aufgabe basierend auf den Namen dieser Datei auszuführen.

Das folgende Skript öffnet eine Datei mit der Katze Befehl und druckt den Inhalt der Datei auf der aktuellen Shell aus.

Hier ist die Ausgabe, die bestätigt, dass Sie die Bash -Substitution durch Schleifen verwenden können.

Befehlserweiterung und Parameterausdehnung

Die Expansion des BASH -Befehls ist der Parameterausdehnung nahezu ähnlich. Bei der Bash -Substitution verwenden wir $ (), Während für die Parameterausdehnung verwenden wir $ . Die Parameterausdehnung schützt eine Variable vor Befehlserweiterung. Lassen Sie uns ein Beispiel zum Verständnis haben.

Im obigen Beispiel erstellen wir eine Variable benannt Datum. Wenn wir die Variable mithilfe der Parameterausdehnung wiederholen, drucken wir den Wert der Variablen, gefolgt von dem Wort hinzugefügt nach dem variablen Wert.

Im Beispiel des Befehlssubstitutionsbeispiels sehen wir jedoch, dass der Befehl Datum, das das aktuelle Datum und die aktuelle Uhrzeit druckt, ersetzt und die Ausgabe anstelle des Befehls verwendet wird.

Wenn Sie also nicht möchten, dass eine Variable als Fall einer Befehlsausdehnung behandelt wird, verwenden Sie $ anstelle von $ ().

Abschluss

Die Expansion des BASH -Befehls ist die gleiche wie die Befehlssubstitution. Dieser Leitfaden hat erklärt, was Befehlserweiterung bedeutet, und wir haben verschiedene Beispiele gegeben, um zu verstehen, wie Sie die Befehlsausdehnung für Ihre Bash -Skripte verwenden können. Der wichtigste Take -Away ist, dass die Befehlssubstitution darin besteht, wenn die Ausgabe eines Befehls anstelle des Befehls selbst verwendet wird.