Setzen die Variable auf die Ausgabe des Befehls in Bash

Fumbani Banda 24 März 2022
  1. Befehlsersetzung in Bash
  2. Bash-Befehlsausgabe an Variable
Setzen die Variable auf die Ausgabe des Befehls in Bash

Dieses Tutorial demonstriert das Zuweisen der Ausgabe eines Befehls zu einer Variablen in Bash mithilfe der Befehlssubstitution.

Befehlsersetzung in Bash

Die Befehlsersetzung ist eine Bash-Funktion, die es uns ermöglicht, Linux-Befehle auszuführen und die Ausgabe des Befehls in einer Bash-Variablen zu speichern. Sobald ein Befehl unter Verwendung der Befehlsersetzungssyntax ausgeführt wird, ersetzt die Standardausgabe des Befehls den Befehl, wobei alle nachgestellten Zeilenumbrüche entfernt werden.

Die Befehlsersetzung verwendet zwei verschiedene Syntaxen, um die Befehlsausgabe in einer Variablen zu speichern.

Der erste Syntaxtyp setzt den Befehl in Klammern und fügt am Anfang ein $-Zeichen hinzu, wie unten gezeigt.

Jedes Zeichen innerhalb der Klammern wird als Teil des Befehls behandelt.

output=$(command)
output=$(command argument-1)
output=$(/path/to/command)
output=$(/path/to/command argument-1)

Der zweite Syntaxtyp verwendet Backticks um den Befehl.

output=`command`
output=`command argument-1`
output=`/path/to/command`
output=`/path/to/command argument-1`

Bash-Befehlsausgabe an Variable

Wir verwenden die folgenden Beispiele, um die Befehlsersetzung in einem Bash-Skript zu demonstrieren.

Im Folgenden verwenden wir die erste Syntax aus Klammern und einem Dollarzeichen am Anfang. Der Befehl whoami wird ausgeführt und die Ausgabe ersetzt den Befehl, der dann der Variable user zugewiesen wird. Wir verwenden den Befehl echo, um die Nachricht auf der Standardausgabe anzuzeigen.

user=$(whoami)
echo "The logged in user is $user"

Wenn Sie dieses Skript ausführen, wird die folgende Ausgabe angezeigt.

The logged in user is delftstack

Im Folgenden verwenden wir die Backticks-Syntax. Die Ausgabe des whoami-Befehls wird der user-Variablen zugewiesen, und echo wird verwendet, um die Nachricht auf dem Terminal auszugeben.

user=`whoami`
echo "The logged in user is $user"

Beim Ausführen des Skripts wird die folgende Ausgabe angezeigt.

The logged in user is delftstack

Im folgenden Skript verwenden wir ls, um den Inhalt des Ordners delftstack aufzulisten, wobei die Klammern und die Dollarzeichen-Syntax verwendet werden. Die Ausgabe des ls-Befehls wird der files-Variablen zugewiesen. Mit dem Befehl echo wird der Inhalt der Variablen files auf dem Terminal ausgegeben.

files=$(ls -l delftstack)
echo "$files"

Das Ausführen des Skripts gibt die folgende Ausgabe auf der Standardausgabe aus.

total 4
-rw-r--r-- 1 fumba fumba  752 Nov 17 12:51 directory.sh
-rw-r--r-- 1 fumba fumba   79 Nov 19 13:11 foo1.sh
drwxr-xr-x 1 fumba fumba 4096 Nov 22 13:57 part
-rw-r--r-- 1 fumba fumba  213 Nov 21 21:10 regex.sh

Das folgende Bash-Skript verwendet die Backticks-Syntax, um die Ausgabe des Befehls ls der Variablen files zuzuweisen, und der Befehl echo wird verwendet, um den Inhalt der Variablen files auf der Standardausgabe auszugeben.

files=`ls -l delftstack`
echo "$files"

Beim Ausführen des Skripts wird die folgende Ausgabe angezeigt.

total 4
-rw-r--r-- 1 fumba fumba  752 Nov 17 12:51 directory.sh
-rw-r--r-- 1 fumba fumba   79 Nov 19 13:11 foo1.sh
drwxr-xr-x 1 fumba fumba 4096 Nov 22 13:57 part
-rw-r--r-- 1 fumba fumba  213 Nov 21 21:10 regex.sh

Wir verwenden die folgende Syntax, um einen mehrzeiligen Befehl einer Variablen im Bash-Skript zuzuweisen.

variable_name=$(command \ 
argument 1 \ 
argument 2 \ 
argument 3)

Das folgende Bash-Skript demonstriert die Zuweisung der Ausgabe eines mehrzeiligen Befehls zu einer Variablen. Der Befehl ls listet den gesamten Inhalt des aktuellen Ordners auf, und die Ausgabe wird an den Befehl head weitergeleitet. Der head-Befehl wählt nur die ersten 5 Zeilen der Eingabe von ls aus und leitet die Ausgabe an den grep-Befehl weiter. Der Befehl grep passt die Zeile mit dem Wort flow an und gibt sie auf der Standardausgabe aus.

files=$(ls -l \
| \
head -5 \
| grep -i "flow")

echo $files

Beim Ausführen des Skripts wird die folgende Ausgabe angezeigt.

drwxr-xr-x 1 fumba fumba 4096 Sep 30 09:29 airflow
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

Verwandter Artikel - Bash Output