Befehl Bash Eval

Befehl Bash Eval
Der Befehl 'eval' wird in Bash verwendet, um Argumente wie ein Shell -Befehl auszuführen. Argumente werden in einer Zeichenfolge verbunden und als Eingabe für den Befehl Shell angenommen, um den Befehl auszuführen. 'eval' führt den Befehl in der aktuellen Shell aus. Dieser Befehl ist nützlich, wenn ein Befehl ausführen muss, der einen speziellen Bediener oder reservierten Schlüsselwörter enthält. Dieser Befehl kann in jedem Skript verwendet werden, wobei der variable Name nicht bekannt ist, bis das Skript ausgeführt wird. Dieses Tutorial hilft Linux -Benutzern, die Verwendung dieses Befehls zu erlernen.

Syntax:

Eval [Argument…]

Hier werden Argumente analysiert und zu einer Zeichenfolge kombiniert, die von der Shell ausgeführt wird. 'eval' gibt einen Exit -Statuscode zurück, nachdem der Befehl ausgeführt wurde. 'eval' gibt 0 als Exit -Statuscode zurück, wenn kein Argument bereitgestellt wird oder nur ein Null -Argument bereitgestellt wird.

Beispiel 1: Führen Sie den Befehl 'WC' mit 'eval' aus

Angenommen, eine Textdatei mit dem Namen “Abteilung.txt”Enthält den folgenden Text. Die Gesamtzahl der Zeilen der Datei kann mit dem Befehl "WC" gezählt werden.

Abteilung.txt

CSE
EEE
ETE
ENGLISCH
BBA
APOTHEKE

Der folgende Befehl speichert den Befehl "WC", um die Gesamtzeilen der Datei zu zählen, Abteilung.txt zur Variablen, $ mycommand.

$ mycommand = "WC -L Abteilung.txt"

Der folgende Befehl "Eval" wird "WC" ausgeführt und die Gesamtzahl der Zeilen drucken.

$ eval $ mycommand

Ausgang:

Die Ausgabe zeigt das Abteilung.txt Datei hat 6 Zeilen.

Beispiele-2: Führen Sie den Befehl 'expr' mit 'eval' aus

Erstellen Sie eine Bash -Datei mit dem Namen Evaltest.Sch und fügen Sie das folgende Skript hinzu. In diesem Skript werden zwei Ganzzahlwerten der Variablen $ x und $ y zugewiesen. Die Befehle "expr" und "echo" werden in zwei Variablen zugewiesen, $ C1 und $ C2, die später mit dem Befehl "Eval" ausgeführt werden.

Evaltest.Sch

#!/Bin/Bash
#Initialisieren Sie die Variable x und y
x = 5
y = 15
#Die erste Befehlsvariable wird verwendet, um den Befehl 'expr' zuzuweisen, um die Werte von $ x und $ y hinzuzufügen
C1 = "'expr $ x + $ y'"
#Die zweite Befehlsvariable wird verwendet, um den Befehl 'Echo' zuzuweisen
C2 = "Echo"
#'eval' berechnet und druckt die Summe von $ x und $ y durch Ausführung der Befehle von $ C1 aus
und $ C2 -Variablen
Eval $ C2 $ C1

Führen Sie das Skript aus.

$ bash evaltest.Sch

Die Summe von 5 und 15 ist 20, die im Ausgang gezeigt wird.

Beispiel-3: Drucken Sie den Wert einer Variablen, die in einer anderen Variablen zugewiesen ist

Erstellen Sie ein Bash -Skript mit dem Namen evalest2.Sh mit dem folgenden Skript. Hier wird eine Variable verwendet, um den Namen einer anderen Variablen zuzuweisen, die eine String -Daten enthält. Der Befehl 'eval' druckt den Wert der Variablen, der den Namen einer anderen Variablen als Inhalt enthält.

Evaltest2.Sch

#!/Bin/Bash
# Weisen Sie der Variablen $ str1 einen Zeichenfolgenwert zu
STR1 = "Shell Skript"
# Weisen Sie den Variablennamen "Str1" der Variablen $ str2 zu
STR2 = str1
#Den Befehl in den Befehl Variable, $
command = "echo"
# 'Eval' -Befehl führt den Befehl 'echo' aus und druckt den Wert der Variablen aus
das enthält in einer anderen Variablen
Eval $ Befehl \ $ $ str2

Führen Sie das Skript aus.

$ bash evaltest2.Sch

Der Wert der Variablen, $ str1 wird gedruckt.

Es gibt eine andere Möglichkeit, auf den Wert einer Variablen zuzugreifen, die der Wert einer anderen Variablen ist. Verwendung '!'Symbol auf den Wert dieser Art von Variable kann zugegriffen werden. Der folgende Befehl kann als Alternative des vorherigen Skripts verwendet werden, und die Ausgabe ist derselbe.

$ str1 = "Shell Skript"; str2 = str1; command = "echo"; Eval $ Command $ !str2

Beispiel-4: Erstellen Sie eine Reihe von Variablen mit Werten und berechnen Sie die Summe der Werte mit dem Befehl "eval"

Erstellen Sie ein Bash -Skript mit dem Namen evalest3.SH und fügen Sie das folgende Skript hinzu. Dieses Skript erstellt eine Reihe von Variablen und speichert die Werte in den Variablen mit dem Befehl 'eval'. Die Werte der Variablen werden hinzugefügt und in eine Variable mit dem Namen $ sum gespeichert. Als nächstes wird der Befehl 'echo' mit Zeichenfolgenwerten in eine Variable zugewiesen, die im Befehl 'eval' verwendet wird, um den Wert der $ summe Variable zu drucken.

Evaltest3.Sch

#!/Bin/Bash
# Initialisieren Sie die Variable $ -Summe mit dem Wert 0
sum = 0
# Deklarieren Sie eine für die Schleife, die 4 -mal iteriert wird
für n in 1… 4
Tun
# Erstellen Sie vier Variablen mit dem Befehl evaly
eval x $ n = $ n
# Fügen Sie die Werte der Variablen mit $ sum hinzu
sum = $ (($ sum+$ x $ n))
Erledigt
# Zuweisen Sie 'Echo' mit String in eine Variable
command = "echo 'das Ergebnis der Summe ='"
# 'eval' Befehl Drucken Sie den Summenwert mit Variablen aus
Eval $ Command $ summe

Führen Sie das Skript aus.

$ bash evaltest3.Sch

Die Summe der vier Variablen ist 1+2+3+4 = 10, die gedruckt wird.

Beispiel-5: Verwenden Sie den Befehl 'eval', um die Liste der Dateien zu entfernen

Erstellen Sie eine Bash -Datei namens evalest4.Sh mit dem folgenden Skript. In diesem Skript werden drei Befehlszeilenargumente als Dateinamen gelesen, die entfernt werden, und speichern die Argumentwerte in eine Array-Variable $ fn. Der Befehl 'RM' wird in einer Variablen, $ -Befehl gespeichert. Für die Schleife wird hier erklärt.

Evaltest4.Sch

#!/Bin/Bash
#Declare ein Array
deklarieren -a fn
# Lesen Sie drei Befehlszeilenargumente und speichern Sie in drei Index des Arrays
fn [0] = $ 1
fn [1] = $ 2
fn [2] = $ 3
# Speichern Sie den Befehl entfernen in eine Variable
command = "rm"
# Für die Loop wird dreimal iteriert, um drei Array -Elemente zu lesen
für Index in 0 1 2
Tun
# Überprüfen Sie, ob die Datei existiert oder nicht existiert
if [[-f $ fn [$ index]]]; Dann
# Wenn die Datei existiert, entfernen Sie die Datei
Eval $ Command $ fn [$ index]
# Informieren Sie den Benutzer, dass die Datei entfernt wird
echo "$ fn [$ index] wird gelöscht."
Anders
#Informieren Sie den Benutzer, dass die Datei nicht existiert
echo "$ fn [$ index] existieren nicht."
fi
Erledigt

Führen Sie das Skript aus.

$ bash evaltest4.SH Marks.docx item.TXT -Produkt.docx

Hier werden zum Zeitpunkt der Ausführung des Skripts drei Dateinamen bereitgestellt. Die Ausgabe zeigt, die markiert.docx und Produkt.DOCX existiert im aktuellen Ort und die Dateien werden entfernt und Element.TXT existiert nicht am aktuellen Ort.

Abschluss

Jeder Bash -Befehl kann mit dem Befehl 'eval' ausgeführt werden, indem er als Zeichenfolge deklariert wird. In diesem Tutorial wird der Befehl 'eval' verwendet, um verschiedene integrierte Bash-Befehle auszuführen und eine Reihe von Variablen zu erstellen. Die Verwendung des Befehls "eval" wird für die Benutzer gelöscht und kann diesen Befehl für verschiedene Zwecke verwenden, nachdem sie dieses Tutorial gelesen haben.