Der eval-Befehl im Bash-Skript

Muhammad Husnain 20 Juni 2023
  1. Eval-Befehl im Bash-Skript
  2. Abschluss
Der eval-Befehl im Bash-Skript

In diesem Artikel geht es um die Verwendung von Strings als Befehl in einem Bash-Skript. Dazu wird der Befehl eval verwendet.

Eval-Befehl im Bash-Skript

Es gibt bestimmte Bash-Skripte, bei denen Sie beispielsweise mithilfe von Variablen oder Eingabewerten eine Zeichenfolge erstellen und am Ende als Befehl ausführen müssen. Für solche Fälle ist eval die Lösung.

In Bash wertet der Befehl eval Parameter ähnlich wie ein Shell-Befehl aus. Argumente werden zu einem String kombiniert und an den Shell-Befehl gesendet, der dann den Befehl ausführt.

In der aktuellen Shell führt eval den Befehl aus. Dieser Befehl ist praktisch, wenn Sie einen Befehl mit einem bestimmten Operator oder reservierten Begriffen ausführen.

Dieser Befehl kann auch in jedem Skript verwendet werden, in dem der Variablenname nicht bekannt ist, bis das Skript ausgeführt wird. Dieses Handbuch hilft Linux-Benutzern dabei, die Verwendung dieses Befehls zu verstehen.

Syntax:

eval [arguments...]

Die Argumente werden diesem Befehl kombiniert als String-Literal übergeben 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, gibt er 0 als Exit-Status zurück.

Zählen Sie die Anzahl der Zeilen in einer Datei mit eval

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

Wir werden diese Aufgabe mit dem Befehl eval ausführen. Der Befehl lautet:

myComm="wc -l sample.txt"
eval $myComm

Schauen wir uns die Ausgabe davon an.

Anzahl der Zeilen in einer Datei zählen

Arithmetische Operation mit eval lösen

Angenommen, wir müssen einige arithmetische Operationen ausführen. Wir können dies mit dem Befehl eval tun.

Zu diesem Zweck erstellen wir ein Bash-Skript.

#!/bin/bash
a=4
b=5
comm1="`expr $a + $b`"
comm2="echo"

eval $comm2 $comm1

In diesem Skript haben wir zwei Variablen erstellt, die zwei Befehle enthalten, einen für die Durchführung von arithmetischen Operationen und den anderen für einen echo-Befehl. In der letzten Zeile haben wir diese beiden Variablen als Argumente an den eval-Befehl übergeben.

eval kombiniert diese beiden Variablen und erstellt einen Befehl wie den folgenden.

echo 'expr 4 + 5'

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

Arithmetische Operation mit eval lösen

Drucken Sie die Werte von Variablen mit eval

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:

Drucken Sie die Werte von Variablen

Drucken Sie die Summe der Zahlen mit eval

Im folgenden Beispiel drucken wir die Summe der Zahlen von 1 bis 4 mit einer for-Schleife im Skript. 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

Abschluss

Der Befehl eval kann ausgeführt werden, indem jeder Bash-Befehl als Zeichenfolge ausgedrückt wird. In dieser Lektion führt der Befehl eval mehrere in Bash integrierte Aufgaben aus und erstellt eine Folge von Variablen.

Nach dem Lesen dieser Lektion werden die Benutzer den Befehl eval besser verstehen und in der Lage sein, ihn für eine Vielzahl von Anwendungen zu verwenden.

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

Verwandter Artikel - Bash Eval