Shell-Scripting wird sehr häufig verwendet, um Dinge in Linux zu automatisieren. Es wird nicht nur für System- und Serveradministrationszwecke verwendet, sondern auch von normalen Linux-Benutzern zur Automatisierung alltäglicher Dinge auf ihren Systemen.
Ein Shell-Skript ist nichts anderes als eine Folge von Befehlen; die ein Kommandozeileninterpreter (z. B. Bash , Zsh ) werde rennen. Neben der Befehlsfolge gibt es Features wie Schleifen , bedingte Anweisungen , Variablen die in einem Shell-Skript verwendet werden kann.
Eine solche Funktion ist das Speichern eines ganzen Befehls in einer Variablen. Mal sehen, was wir damit meinen und wie es gemacht werden kann.
Grundsätzlich können Sie mit Linux-Shells jeden Befehl in einer Variablen als Zeichenfolge speichern. Dies ist nützlich für komplexe Inline-Anweisungen mit mehreren Befehlen, Umleitungen usw. Diese Variable kann dann an das Programm 'eval übergeben werden ‘ damit der Inhalt der Variablen als Befehl ausgeführt wird.
Um beispielsweise die Ausgabe des Befehls „cat test.txt | wc -l ' in einer Variablen namens 'cnt ‘, können wir die folgende Anweisung in der test.sh haben Skriptdatei:
#!/bin/bash cnt="cat test.txt | wc -l"
Um diesen Befehl nun jederzeit auszuführen, übergeben wir die Variable als Argument an ‚eval ‘, wie unten gezeigt:
#!/bin/bash cnt="cat test.txt | wc -l" eval $cnt
Speichern und beenden Sie das Skript.
Lassen Sie uns nun den Befehl und das Skript selbst ausführen, um dies zu überprüfen.
$ cat test.txt | wc -l $ chmod + test.sh $ ./test.sh
Hinweis :Ersetzen Sie test.sh mit Ihrem Skriptnamen. Stellen Sie sicher, dass Ihre Skriptdatei Ausführungsrechte hat.
Wie im obigen Screenshot zu sehen, sind beide Ergebnisse gleich.
Schlussfolgerung
In diesem Artikel haben wir gesehen, wie man einen Linux-Befehl als Variable im Shell-Skript speichert. Obwohl dies im Shell-Skript gezeigt wurde, können Sie dasselbe auch in der Befehlszeile tun und die Variable dann an „eval“ übergeben ‘.
Wenn Sie Fragen oder Feedback haben, teilen Sie uns dies in den Kommentaren unten mit!