Ausgabe eines Befehls in eine Variable setzen

Ausgabe eines Befehls in eine Variable setzen

Wie kann ich die Ausgabe head -15 textfile.txtin eine Variable einfügen $X, um sie in einem ifBefehl wie diesem zu verwenden:

 if $X = 'disabled' then

?

Antwort1

x="$(head -15 testfile.txt)"
if [ "$x" = disabled ]
then
    echo "We are disabled"
fi

Wenn Sie die Ausgabe eines Befehls in einer Shell-Variable erfassen möchten, verwenden Sie grundsätzlich das folgende Format: variable="$(command args ...)". Der variable=Teil ist eine Zuweisung. Der $(...)Teil ist eine Befehlsersetzung.

ifBeachten Sie auch, dass die Shell keine Anweisungen in der Form ausführt if $X = 'disabled'. Die Shell erwartet, dass auf ein Befehl folgt, ifund wertet den Rückgabecode dieses Befehls aus. Im obigen Fall führe ich den Befehl aus, der entweder als oder testgeschrieben werden kann .test ...[ ... ]

Viele halten es für die beste Vorgehensweise, Variablen in Kleinbuchstaben für Shell-Skripte zu verwenden. Dies liegt daran, dass systemdefinierte Variablen in Großbuchstaben geschrieben sind und Sie nicht versehentlich eine überschreiben möchten. Andererseits wird keine Systemvariable aufgerufen, Xsodass dies hier kein wirkliches Problem darstellt.

verwandte Informationen