Frage 102-8

Die Shell-Skript-Zeile

  while [-e datei]; do bla; done

ist fehlerhaft. Warum?

  1. [...] ist nur nach if erlaubt, while benötigt test.

  2. while erwartet einen logischen Ausdruck, nicht ein Programm (blah).

  3. Nach do fehlt das Semikolon.

  4. Nach [ und vor ] fehlt ein Leerzeichen.

  5. Die Bestandteile der while-Anweisung müssen durch Zeilenumbrüche getrennt werden, nicht durch Semikolons.

LPI-Lernziel Einfache Skripte anpassen oder schreiben (105.2)

Die abweisende while-Schleife prüft vor jedem Schleifendurchgang, ob die »Bedingung« wahr ist. Nur dann wird die Schleife durchlaufen. Die Bedingung ist, genauer gesagt, der Exitcode des Kommandos zwischen while und dem Zeilenende bzw. Semikolon, Antwort 2 ist also falsch, da es kein Problem mit Programmen als Bedingung gibt. Im Gegenteil ist test ein Programm, mit dem Sie diverse logische Ausdrücke auswerten können, und die eckigen Klammern sind ein Synonym für test (damit ist Antwort 1 auch falsch).

Semikolons und Zeilenumbrüche zwischen Kommandos sind in Shellskripten austauschbar, so dass Sie das angegebene Kommando auch als

while [-e datei]
do

bla done

schreiben könnten (oder gar sollten), aber die einzeilige Schreibweise ist absolut erlaubt (Antwort 5 ist also auch falsch). In jedem Fall ist hinter dem do kein Semikolon verlangt (auch wenn in der mehrzeiligen Form ein Zeilenumbruch kommen darf), was Antwort 3 erledigt.

Als letztes bleibt uns Antwort 4, die in der Tat stimmt: [-e wäre ein Kommando mit einem Namen aus drei Zeichen, das es normalerweise nicht gibt; wenn Sie das Kommando [, alias test meinen, müssen Sie hinter der linken und vor der rechten eckigen Klammer ein Leerzeichen haben.

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 12:04:16

Benutzer

Nicht angemeldet

Kommentare

RSS