Bash eval-Befehl

`eval`-Befehl wird in Bash verwendet, um Argumente wie ein Shell-Befehl auszuführen. Argumente werden zu einer Zeichenkette verbunden und als Eingabe für den Shell-Befehl genommen, um den Befehl auszuführen. `eval` führt den Befehl in der aktuellen Shell aus. Dieser Befehl ist nützlich, wenn ein Befehl ausgeführt werden soll, der einen speziellen Operator oder reservierte Schlüsselwörter enthält. Dieser Befehl kann in jedem Skript verwendet werden, auch wenn der Variablenname bis zur Ausführung des Skripts unbekannt ist. Dieses Tutorial wird Linux-Benutzern helfen, die Verwendung dieses Befehls zu erlernen.

Syntax:

eval

Hier werden Argumente geparst und zu einem String kombiniert, der von der Shell ausgeführt wird. `eval` gibt nach der Ausführung des Befehls einen Exit-Statuscode zurück. `eval` gibt 0 als Exit-Statuscode zurück, wenn kein Argument oder nur ein Null-Argument angegeben wird.

Beispiel-1: Ausführen des `wc`-Befehls mit `eval`

Angenommen, eine Textdatei mit dem Namen „department.txt“ enthält den folgenden Text. Die Gesamtzahl der Zeilen der Datei kann mit dem `wc` Befehl gezählt werden.

Abteilung.txt

CSE
EEE
ETE
ENGLISH
BBA
PHARMACY

Der folgende Befehl speichert den `wc`-Befehl zum Zählen der Gesamtzahl der Zeilen der Datei department.txt in der Variablen $mycommand.

$ mycommand=“wc -l department.txt“

Der folgende `eval`-Befehl führt den `wc`-Befehl aus und gibt die Gesamtzahl der Zeilen aus.

$ eval $mycommand

Ausgabe:

Die Ausgabe zeigt, dass die Datei department.txt-Datei 6 Zeilen hat.

Beispiel-2: Ausführen des Befehls `expr` mit `eval`

Erstelle eine Bash-Datei namens evaltest.sh und füge das folgende Skript hinzu. Dieses Skript wird zwei ganzzahlige Werte in die Variablen $x und $y einfügen. Die Befehle `expr` und `echo` werden zwei Variablen, $c1 und $c2, zugewiesen, die später mit dem Befehl `eval` ausgeführt werden.

evaltest.sh

#!/bin/bash
#Initialisieren Sie die Variablen x und y
x=5
y=15
#Die erste Befehlsvariable wird verwendet, um den Befehl `expr` zuzuweisen, um die Werte von $x und $y zu addieren
c1=“`expr $x + $y`“
#Die zweite Befehls Variable wird verwendet, um den Befehl `echo` zuzuweisen
c2=“echo“
#`eval` wird die Summe von $x und $y berechnen und ausgeben, indem die Befehle der Variablen $c1
und $c2 ausgeführt werden
eval $c2 $c1

Starten Sie das Skript.

$ bash evaltest.sh

Die Summe von 5 und 15 ist 20, die in der Ausgabe angezeigt wird.

Beispiel-3: Den Wert einer Variablen ausgeben, die einer anderen Variablen zugewiesen ist

Erstelle ein Bash-Skript namens evaltest2.sh mit dem folgenden Skript. Hier wird eine Variable verwendet, um den Namen einer anderen Variable zuzuweisen, die eine Zeichenkette als Daten enthält. Der Befehl `eval` gibt den Wert der Variablen, die den Namen einer anderen Variablen enthält, als Inhalt aus.

evaltest2.sh

#!/bin/bash
# Weisen Sie einen String-Wert in die Variable $str1
str1=“Shell Script“
# Weisen Sie den Variablennamen „str1“ in die Variable $str2
str2=str1
#Speichern Sie den Befehl in die Variable, $command
command=“echo“
# Der Befehl `eval` führt den Befehl `echo` aus und druckt den Wert der Variablen
die in einer anderen Variablen enthalten ist
eval $command \${$str2}

Starten Sie das Skript.

$ bash evaltest2.sh

Der Wert der Variablen $str1 wird gedruckt.

Es gibt noch eine andere Möglichkeit, auf den Wert einer Variablen zuzugreifen, deren Name der Wert einer anderen Variablen ist. Mit dem Symbol ‚!‘ kann auf den Wert dieser Art von Variablen zugegriffen werden. Der folgende Befehl kann als Alternative zum vorherigen Skript verwendet werden und die Ausgabe ist die gleiche.

$ str1=“Shell Script“; str2=str1; command=“echo“; eval $command ${!str2}

Beispiel-4: Eine Reihe von Variablen mit Werten erstellen und die Summe der Werte mit dem Befehl `eval` berechnen

Erstelle ein Bash-Skript mit dem Namen evaltest3.sh und füge das folgende Skript hinzu. Dieses Skript erstellt eine Reihe von Variablen und speichert die Werte mit dem Befehl „eval“ in den Variablen. Die Werte der Variablen werden addiert und in einer Variablen namens $sum gespeichert. Als nächstes wird der `echo`-Befehl mit String-Werten einer Variablen zugewiesen, die im `eval`-Befehl verwendet wird, um den Wert der $sum-Variablen zu drucken.

evaltest3.sh

#!/bin/bash
# Initialisieren Sie die Variable $sum mit dem Wert 0
sum=0
# Deklarieren Sie eine for-Schleife, die 4 Mal durchlaufen wird
for n in {1..4}
do
# Erstelle vier Variablen mit eval Befehl
eval x$n=$n
# Addiere die Werte der Variablen mit $sum
sum=$(($sum+$x$n))
done
# Weise `echo` Befehl mit String in eine Variable
command=“echo ‚Das Ergebnis der Summe='“
# `eval` command print the sum value using variables
eval $command $sum

Run the script.

$ bash evaltest3.sh

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

Beispiel-5: Verwendung des `eval`-Befehls zum Entfernen der Dateiliste

Erstellen Sie eine Bash-Datei namens evaltest4.sh mit dem folgenden Skript. Dieses Skript liest drei Befehlszeilenargumente als Dateinamen, die entfernt werden sollen, und speichert die Argumentwerte in einer Array-Variablen, $fn. Der Befehl „rm“ wird in der Variablen $command gespeichert. Hier wird eine For-Schleife deklariert, um jeden Dateinamen abzurufen und die Datei mit dem Befehl `eval` zu entfernen, wenn die Datei existiert.

evaltest4.sh

#!/bin/bash
#Deklarieren Sie ein Array
deklarieren Sie -A fn
# Drei Kommandozeilenargumente einlesen und in drei Indizes des Arrays speichern
fn=$1
fn=$2
fn=$3
# Den Entfernungsbefehl in eine Variable speichern
command=“rm“
# for-Schleife wird dreimal iterieren, um drei Arrayelemente zu lesen
for index in 0 1 2
do
# Überprüfen, ob die Datei existiert oder nicht existiert
if } ]]; then
# wenn die Datei existiert, dann entferne die Datei
eval $command ${fn}
# Informiere den Benutzer, dass die Datei entfernt wurde
echo „${fn} ist gelöscht.“
Else
#Informiere den Benutzer, dass die Datei nicht existiert
echo „${fn} existiert nicht.“
fi
done

Starten Sie das Skript.

$ bash evaltest4.sh marks.docx item.txt product.docx

Hier werden bei der Ausführung des Skripts drei Dateinamen angegeben. Die Ausgabe zeigt, dass marks.docx und product.docx am aktuellen Speicherort existieren und die Dateien entfernt werden und item.txt am aktuellen Speicherort nicht existiert.

Fazit

Jeder Bash-Befehl kann mit dem `eval`-Befehl ausgeführt werden, indem er als String deklariert wird. Der `eval`-Befehl wird in diesem Tutorial verwendet, um verschiedene eingebaute Befehle der Bash auszuführen und eine Reihe von Variablen zu erstellen. Die Verwendungsmöglichkeiten des `eval`-Befehls werden für die Benutzer geklärt und sie werden in der Lage sein, diesen Befehl für verschiedene Zwecke zu verwenden, nachdem sie dieses Tutorial gelesen haben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.