Wie weist man einer Variablen im Terminal einen Wert zu?

Wie weist man einer Variablen im Terminal einen Wert zu?

Wie kann ich im Terminal eine neue Variable festlegen und ihr einen Wert zuweisen? Angenommen, ich möchte zwei Dateien mit langen Dateinamen vergleichen und dann auch einige andere Vorgänge ausführen. Aufgrund der langen Dateinamen möchte ich zwei Variablen erstellen, jeder Variable einen Wert zuweisen und sie als Platzhalter verwenden. Ich brauche so etwas wie das Folgende:

set var1 = 'long-file-name1'
set var2 = 'long-file-name2'
diff var1 var2

Antwort1

Der Pseudocode (oder Code für eine andere Shell oder Programmiersprache) in Ihrer Frage lässt sich in die folgenden Bash-Befehle übersetzen:

var1='long-file-name1'
var2='long-file-name2'
diff "$var1" "$var2"

Die Syntax $var1istParametererweiterung. Dadurch wird die Variable var1durch ihren Wert ersetzt, in diesem Fall durch den darin gespeicherten Dateinamen. Nicht in Anführungszeichen gesetzte ParametererweiterungsauslöserWorttrennung(auch „Feldaufteilung“ genannt) undGlotzen(auch „Dateinamenerweiterung“ und „Pfadnamenerweiterung“ genannt). Normalerweise möchten Sie nicht, dass diese weiteren Erweiterungen erfolgen.Außer wenn Sie genau wissen, dass Sie sie wollen, Du solltestBitte beifügenalle Vorkommen von Parametererweiterungen inAnführungszeichen. (Einzelzitatesind sogar noch mächtiger – sie würden auch eine Parametererweiterung verhindern.)

Dadurch wird der diffBefehl mit dem in „passed“ gespeicherten Dateinamen var1als erstem Befehlszeilenargument und dem in „ var2passed“ gespeicherten Dateinamen als zweitem Befehlszeilenargument ausgeführt.Dies bewirkt diffeinen Vergleich der Inhalte der Dateien, wie Sie es beabsichtigen, genauso, als hätten Sie Folgendes ausgeführt:

diff 'long-file-name-1' 'long-file-name-2'

Sie werden feststellen, dass ich den Befehl nicht verwendet habe export.Das liegt daran, dass der exportBefehl in diesem Fallweder notwendig noch angemessenfür das, was Sie tun. Wenn der Wert einer Variablen nur in Ihrer Shell erweitert werden muss - und nichtZugriff durch Programme, die von Ihrer Shell aus gestartet werden-- dann müssen (und sollten) Sie nicht verwenden export.

Wenn Ihr System einen seltsamen diffBefehl hätte, der Dateinamen aus Umgebungsvariablen namens var1und liest var2, anstatt Dateinamen als Befehlszeilenargumente zu verwenden, müssten Sie Ihre Variablen exportieren. Aber so difffunktioniert es nicht. Der diffBefehl greift nicht auf Ihre Variablen zu und weiß nichts über sie. Die Shell erweitert sie, um die Argumente zu erzeugen, die sie dann an übergibt diff.

Antwort2

Sie können den Dateinamen in einer Variablen in Bash speichern, indem Sie ihn einfach zuweisen

Zum Beispiel:variable=filename && variable2=filename2

Sie können dann diffdie beiden Dateien mit diesen Variablen wie folgt diff $variable $variable2

NB: Wenn Ihre Dateinamen Leerzeichen enthalten, sollten Sie sowohl die Dateinamen als auch die Variablen in doppelte Anführungszeichen setzen, insbesondere wenn Sie Operationen mit ihnen durchführen.

verwandte Informationen