Was bewirkt die Kommandofolge
FOO=bar
$FOO=quux
in der bash?
Die Variable FOO wird auf bar gesetzt und die Variable bar dann auf quux
Die Variable FOO wird auf bar gesetzt, anschließend versucht die Shell, das Kommando bar=quux auszuführen
Die Variable bar wird auf FOO gesetzt und dann auf quux
Die zweite Kommandozeile ist syntaktisch falsch
LPI-Lernziel Auf der Kommandozeile arbeiten (103.1)
Hierzu müssen Sie wissen, dass die Shell erst Variablenbezüge ersetzt und
dann das resultierende Kommando auszuführen versucht. Das heißt, in dem
Moment, wo die zweite Zeile angeschaut wird, hat die Variable FOO den Wert
bar, und entsprechend versucht die Shell, das bei der Ersetzung entstehende
Kommando bar=quux auszuführen (Antwort 2). Wenn Ihr System ist wie
unseres, geht das natürlich schief, aber das war ja nicht gefragt.
Zumindest die Antworten 1 und 3 sind im ersten Moment vielleicht plausibel,
aber falsch. Wenn Sie wirklich einen Variablennamen aus einer anderen
Variablen nehmen wollen, so wie Antwort 1 das andeutet, müssen Sie die
Shell dazu bringen, das ganze Kommando noch einmal von vorne anzuschauen,
etwa mit eval $FOO=quux. Was Antwort 3 angeht, gibt es natürlich
einen großen Unterschied zwischen dem Namen einer Variablen (FOO) und deren
Wert ($FOO), den man nicht vernachlässigen sollte; auf der linken Seite
einer Variablenzuweisung sollte unter normalen Umständen niemals ein
Dollarzeichen vor dem Variablennamen stehen (die Effekte können Sie ja
hier beobachten).
Nicht angemeldet