Befehle in einer Variablen im Bash-Skript ausführen

Naila Saad Siddiqui 15 Februar 2024
  1. Bash-Skriptvariable
  2. Verwenden Sie den Befehl Eval, um Befehle in einer Variablen im Bash-Skript auszuführen
  3. Verwenden Sie bash mit dem Flag -c, um Befehle in einer Variablen im Bash-Skript auszuführen
  4. Verwenden Sie die Befehlsersetzung $(), um Befehle in einer Variablen im Bash-Skript auszuführen
Befehle in einer Variablen im Bash-Skript ausführen

In dieser Anleitung geht es darum, einen Bash-Befehl in einer Variablen zu speichern und ihn später direkt aus dieser Variablen auszuführen. Zuerst werden wir mehrere Methoden zum Ausführen von Befehlen besprechen, die in einer Variablen enthalten sind, gefolgt von mehreren Skriptbeispielen.

Lass uns anfangen.

Bash-Skriptvariable

Variablen sind ein wesentliches Feature von Bash. Ob Sie sie in einer if-Kontrollstruktur, einer case-Struktur oder einfach innerhalb von Skripten verwenden, sie verschönern Ihre Skripte nicht nur, sondern erleichtern auch das Verständnis erheblich.

Sie können sie auch als Skripte ausführen, was das Leben besonders erleichtert, wenn Sie viele Befehle leiten und die Befehle sehr lang sind. Dadurch wird die Länge Ihres Skripts, das möglicherweise hundert Wörter lang ist, auf ein Wort reduziert, das möglicherweise nicht einmal ein Dutzend Wörter lang ist.

Stellen Sie sich vor, Sie debuggen ein Skript, das hundert Wörter lang ist, im Vergleich zu einem, das nicht einmal ein Dutzend Wörter lang ist; Denken Sie über die Zeit nach, die Sie sparen können.

Manchmal müssen wir Bash-Wrapper schreiben, die Befehle vom Benutzer entgegennehmen, sie in Variablen speichern und einige von ihnen bedingt ausführen, nachdem sie eine gewisse Geschäftslogik angewendet haben (vielleicht eine Reihe von if-else-Entscheidungen). In diesen Szenarien müssen wir uns nun die Methoden ansehen, die uns beim Analysieren und Interpretieren des in Variablen gespeicherten Befehls helfen können, um ihn als Bash-Befehl auszuführen.

Hier werden wir einige der effizientesten Methoden zum Ausführen von Befehlen besprechen, die in einer Variablen enthalten sind.

Verwenden Sie den Befehl Eval, um Befehle in einer Variablen im Bash-Skript auszuführen

Einige Bash-Skripte erfordern, dass Sie eine Zeichenfolge mit Eingabewerten oder Variablen (z. B.) erstellen und am Ende als Befehl ausführen. Der Befehl eval ist in diesen Situationen die Antwort.

Um Parameter wie einen Shell-Befehl auszuwerten, verwenden Sie den Bash-Befehl eval.

Der Shell-Befehl erhält eine Reihe von Argumenten und verwendet diese Zeichenfolge, um den Befehl auszuführen. Dann wird der Befehl in der aktuellen Shell von eval ausgeführt.

Dieser Befehl ist nützlich, wenn Sie einen Befehl ausführen, der einen bestimmten Operator oder reservierte Begriffe verwendet.

Syntax:

eval [arguments...]

Argumente werden an diesen Befehl übergeben, als Zeichenfolgenliteral kombiniert und dann zur Ausführung an Bash gesendet. Dieser Befehl gibt den Exit-Status nach der Ausführung des Befehls zurück.

Wenn diesem Befehl keine Argumente übergeben werden oder Null übergeben wird, wird 0 als Exit-Status zurückgegeben.

Beispiel 1: Zählen Sie die Anzahl der Wörter in einer Datei.

Angenommen, wir haben eine Datei mysample.txt, die einige Textzeilen enthält. Wenn wir die Anzahl der Wörter in dieser Datei zählen müssen, können wir den Befehl wc -w verwenden.

Wir werden diese Aufgabe mit dem Befehl eval ausführen. Das Bash-Skript lautet:

#!/bin/bash
wordcount="wc -w mysample.txt"
eval $wordcount

Schauen wir uns seine Ausgabe an:

eval-Befehlsausgabe

Beispiel 2: Verwenden Sie mehrere Variablen, um den Befehl zu erstellen.

Angenommen, wir müssen eine Erklärung Willkommen bei Eval Command drucken. Wir können dies mit dem Befehl eval tun:

#!/bin/bash
var1="Welcome to Eval Command"
comm1="echo"

eval $comm2 $var1

In diesem Skript haben wir zwei Variablen erstellt, eine enthält die zu druckende Nachricht und die andere den echo-Befehl. Wir übergeben diese beiden Variablen an den Befehl eval, der den gesamten Befehl entsprechend aufbaut.

Nach der Ausführung dieses Skripts erhalten wir die folgende Ausgabe:

eval-Befehlsausgabe mit mehreren Variablen

Beispiel 3: Drucken Sie die Werte von Variablen.

Im folgenden Beispiel drucken wir den Wert einer Variablen, die eine andere Variable enthält.

#!/bin/bash
str1="my script"
str2= str1
comm="echo "
eval $comm '$str2'

Die Ausgabe des obigen Skripts lautet:

eval verschachtelte Variablenausgabe

Beispiel 4: Geben Sie die Summe der Zahlen aus.

Im folgenden Beispiel geben wir die Summe der Zahlen von 1 bis 4 aus, indem wir die for-Schleife im Skript verwenden. Dann drucken wir diese Summe mit dem Befehl eval.

Das Skript für dieses Problem lautet:

#!/bin/bash
sum=0
for n in {1..4}
do
sum=$(($sum+$n))
done
comm="echo 'The result of sum from 1-4 is: '"
eval $comm $sum

Die Ausgabe des obigen Skripts lautet:

Summe der ausgegebenen Zahlen

Verwenden Sie bash mit dem Flag -c, um Befehle in einer Variablen im Bash-Skript auszuführen

Standardmäßig liest der Befehlsinterpreter bash Befehle aus der Standardeingabe oder einer Datei und führt sie aus. Wenn jedoch das Flag -c gesetzt ist, liest der bash-Interpreter Befehle aus dem ersten String-Parameter (und es sollte sich um ein Nicht-Optionsargument handeln).

Daher können wir damit Befehle ausführen, die in einer Bash-String-Variablen gespeichert sind.

Das folgende Skript weist beispielsweise zuerst die Befehlszeichenfolge ls der Variablen COMMAND zu. Dann verwendet es den bash-Interpreter mit dem -c-Befehl, um die COMMAND-Variable als Eingabe zu verwenden.

#!/bin/bash
COMMAND="ls"
bash -c $COMMAND

Der obige Befehl listet alle Verzeichnisse und Dateien im aktuellen Arbeitsverzeichnis der Skriptdatei auf.

Verwenden Sie die Befehlsersetzung $(), um Befehle in einer Variablen im Bash-Skript auszuführen

Wir können die Befehlsersetzungsmethode verwenden, um den in einer Variablen gespeicherten Befehl wie folgt auszuführen:

#!/bin/bash
COMMAND="ls"
$(echo $COMMAND)

Verwandter Artikel - Bash Variable