if: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Michi (Diskussion | Beiträge) (Die Seite wurde neu angelegt: Der Shell-Befehl <b>if</b> ist eine Verzweigung zur Erzeugung einer bedingten Abfrage. == Syntax == Folgende allgemeine bedingte Verzweigung führt <i>Befehls...) |
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 23: | Zeile 23: | ||
fi | fi | ||
| valign=top width=33% | | | valign=top width=33% | | ||
if <i>Befehlsfolge1</i> | if <i>Befehlsfolge1</i> | ||
then <i>Befehlsliste1</i> | then <i>Befehlsliste1</i> | ||
Zeile 30: | Zeile 28: | ||
then <i>Befehlsliste2</i> | then <i>Befehlsliste2</i> | ||
fi | fi | ||
"elif" benötigt kein abschliessendes "fi". | |||
|} | |} | ||
Version vom 17. Januar 2009, 16:41 Uhr
Der Shell-Befehl if ist eine Verzweigung zur Erzeugung einer bedingten Abfrage.
Syntax
Folgende allgemeine bedingte Verzweigung führt Befehlsfolge1 aus. Ist der Exit-Status des letzten Befehls von Befehlsfolge1 eine 0, dann wird der "then"-Teil ausgeführt. Andernfalls wertet die Shell eine allfällig folgende und mit "elif" eingeleitete Befehlsfolge2 aus. Der zugehörige "then"-Teil wird ebenfalls nur ausgewertet, falls Befehlsfolge2 den Exit-Status 0 liefert. Steht am Ende der Sequenz eine "else"-Anweisung, dann wird Befehlsliste3 ausgeführt, falls keine der zuvor durchgeführten Abfragen zutrifft.
Grundsyntax | Gleichwertige Verschachtelungen | |
---|---|---|
if Befehlsfolge1 then Befehlsliste1 [elif Befehlsfolge2 then Befehlsliste2] [else Befehlsliste3] fi |
if Befehlsfolge1 then Befehlsliste1 else if Befehlsfolge2 then Befehlsliste2 fi fi |
if Befehlsfolge1 then Befehlsliste1 elif Befehlsfolge2 then Befehlsliste2 fi "elif" benötigt kein abschliessendes "fi". |
Verwendung
Wenn die Datei "/etc/passwd" vorhanden ist, werden die Anzahl Zeilen in der Datei gezählt.
# if ls /etc/passwd; then wc -l /etc/passwd; fi
#!/bin/sh if [ "$SHELL" = "/bin/bash" ]; then echo "your login shell is the bash (bourne again shell)" else echo "your login shell is not bash but $SHELL" fi
#!/bin/sh if test -f /etc/password then more /etc/password else echo "/etc/password ist keine Datei" exit fi