Wie speichere ich die Befehlsausgabe als Variable in Bash? PlatoBlockchain-Datenintelligenz. Vertikale Suche. Ai.

Wie speichere ich die Befehlsausgabe als Variable in Bash?

Einleitung

In Bash-Skripten kann es praktisch sein, die Ausgabe eines Befehls Variablen zuzuweisen, indem die Ausgaben der Befehle gespeichert und später verwendet werden.

In dieser kurzen Anleitung schauen wir uns an, wie Sie die Ausgabe eines Befehls als Variable in Bash speichern können.

Die Grundlagen zum Einrichten von Variablen

Das Speichern der Ausgabe eines Befehls als Variable wird erreicht durch Befehlsersetzung. Die Befehlsersetzung ist ein Wrapper, der den Befehl in a ausführt Subshell-Umgebung, und ersetzt den umschlossenen Befehl durch die Standardausgabe der Umgebung, in der der Befehl ausgeführt wurde. Dieser Ausgang kann dann später referenziert werden, wenn er mit einer Referenzvariablen verbunden ist!

Die Befehlsersetzung kann durch Backticks oder das Dollarzeichen mit Klammern erreicht werden:

`command`

$(command)

Es gibt Diskussionen darüber, ob `Befehl` (Backticks) oder $(Befehl) (Dollarzeichen und Klammern) sollte als „Best Practice“ verwendet werden. $(command) funktioniert gut beim Verschachteln und verbessert in einigen Fällen die Lesbarkeit, aber Sie können in den vorangehenden Beispielen mit beiden Syntaxen arbeiten.

Davon abgesehen – das Zuweisen der Ausgabe eines Befehls zu einer Variablen in Bash ist so einfach wie:

VARIABLE=$(command)
echo "${VARIABLE}"

Laufen ${variable} ist bekannt als Parametererweiterung, und wird verwendet, um den einer Referenzvariablen zugeordneten Wert auszuwerten und abzurufen.

Schauen wir uns nun das einfache Beispiel zum Einrichten einer Variablen für einen Befehl zum Ändern der Ausgabefarbe an:

#!/bin/bash
GREEN=$(tput setaf 2)
echo "${GREEN}Please"

ORANGE=$(tput setaf 9)
echo "${ORANGE}Visit"

echo "${GREEN}Paris"

Im Snippet haben wir die verwendet tput Befehl und weist den zurückgegebenen Wert dieser Befehle zu, um farbigen Text zu drucken. Das setaf ändert die Vordergrundfarbe, und 3 (grün) und 9 (orange) sind Farbcodes.

Jetzt gehen wir zu einem weiteren Beispiel über, das mehrere Bedingungen enthält, um Variablen für verschiedene Befehle einzurichten:

#!/bin/bash
PERSON=$(whoami)
echo -e "Hey ${PERSON}! I am Charlien"

DETAILS=$(uname -a)
echo -e "You're running this script on:n${DETAILS}n"

DATES=$(date)
echo -e "The script is being run on:n${DATES}n"

CREATE=$(touch $(date +"%d%m%Y").txt)
echo -e "A text file logging this run is created.${CREATE}n"

LOCATION=$(ls 
  -l *txt)
echo -e "Saved text file at: ${LOCATION}"

Im obigen Skript ist die whoami Der Befehl gibt den Benutzernamen des aktuellen Benutzers zurück. Das uname -a gibt die Systeminformationen zurück, und die date gibt die aktuelle Uhrzeit und das Datum zurück.

Hinweis: Wir können Variablenzuweisungen verketten, indem wir mehrere Befehle in einem einzigen verschachtelten Aufruf hinzufügen. Das CREATE Variable enthält die Ausgabe der touch Befehl, der wiederum eine Datei erstellt und den Dateinamen auf die Ausgabe von setzt date +"%d%m%Y Befehl.

Sehen Sie sich unseren praxisnahen, praktischen Leitfaden zum Erlernen von Git an, mit Best Practices, branchenweit akzeptierten Standards und einem mitgelieferten Spickzettel. Hören Sie auf, Git-Befehle zu googeln und tatsächlich in Verbindung, um es!

Zum Schluss fügen wir a hinzu multiline Befehlsvariablen-Zuweisungskonzept durch Hinzufügen eines umgekehrten Schrägstrichs () zwischen den ls Befehl -l Flag, um nur Textdateien anzuzeigen *.txt. Der Backslash ist ein Escape-Zeichen, das der Shell mitteilt, das nächste Zeichen nicht zu interpretieren.

Im echo Befehl haben wir den hinzugefügt -e Flag, um das Sonderzeichen zu verwenden, d. h. n (newline), um die Ausgabe in der neuen Zeile zu drucken.

Nach dem Ausführen des Skripts erhalten wir folgendes Ergebnis:

$ ./variable.sh

Zusammenfassung

In dieser kurzen Anleitung haben wir uns angesehen, wie Sie die Ausgabe eines Befehls auf eine Variable in Bash setzen können. Wir haben uns den Unterschied zwischen den Syntaxen für angesehen Befehlsersetzung, unter Hinweis auf die Lesbarkeitsverbesserungen von $(command) über Backtick-basierte Substitution. Dann haben wir uns einige Beispiele für einfache Zuweisungen und verkettete/verschachtelte Ausgangszuweisungen angesehen.

Zeitstempel:

Mehr von Stapelmissbrauch