Frage 101-88

Was bewirkt die Kommandofolge

  FOO=bar
  $FOO=quux

in der bash?

  1. Die Variable FOO wird auf bar gesetzt und die Variable bar dann auf quux

  2. Die Variable FOO wird auf bar gesetzt, anschließend versucht die Shell, das Kommando bar=quux auszuführen

  3. Die Variable bar wird auf FOO gesetzt und dann auf quux

  4. 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).

Noch kein Kommentar · Kommentar hinzufügen · RSS

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