Frage 101-89

Was ist die Ausgabe der Kommandofolge

  FOO=bar
  FOO=quux echo $FOO

in der bash?

  1. Die Zeichenkette bar

  2. Die Zeichenkette quux

  3. Die Zeichenkette $FOO

  4. Eine Fehlermeldung -- das zweite Kommando ist syntaktisch falsch

LPI-Lernziel Auf der Kommandozeile arbeiten (103.1)

Diese Frage ist echt gemein. Man könnte sich auf den Standpunkt stellen, dass in der zweiten Zeile erst die Variable FOO auf den Wert quux gesetzt und der Wert von FOO anschließend ausgegeben wird, also Antwort 2 richtig wäre. Das ist aber nicht der Fall. Denken Sie daran, dass eine Extra-»Zuweisung« am Anfang eines Kommandos die betreffende Variable für dieses Kommando in die Prozessumgebung stellt. Das passiert aber erst, nachdem im Kommando ansonsten die Variablenbezüge ersetzt worden sind, und dabei hat FOO natürlich seinen alten Wert aus der Zeile davor. Unter dem Strich wird also

FOO=quux echo bar

ausgeführt -- Antwort 1 ist richtig.

Wenn Sie glauben, Antwort 3 wäre es gewesen, sollten Sie sich über Shellvariable bilden; wer an Antwort 4 denkt, ist fantasielos :^)

1 Kommentar · Kommentar hinzufügen · RSS

Testcase

dutCh (eingetragen als Rene Rudolph) · 8. Mai 2012, 19:07

700 0 ~$ FOO=bar

701 0 ~$ FOO=nox echo $FOO
bar

702 0 ~$ (FOO=nox echo $FOO)
bar

703 0 ~$ (FOO=nox; echo $FOO)
nox

704 0 ~$ echo $FOO
bar

705 0 ~$ FOO=nox; echo $FOO
nox

706 0 ~$ echo $FOO
nox

707 0 ~$ _

Wichtig

LPI-Logo

Die LPI Academy ist keine offizielle Webseite des LPI!

Sponsor

Linup-Front-Logo

Die LPI Academy wird für die Community unterstützt von der Linup Front GmbH

A Django Site

Diese Seite

Version: 0 (Anselm)
22.8.2009 01:07:23

Benutzer

Nicht angemeldet

Kommentare

RSS