if: Unterschied zwischen den Versionen

Aus Mikiwiki
Wechseln zu: Navigation, Suche
(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...)
 
Zeile 23: Zeile 23:
 
  fi
 
  fi
 
| valign=top width=33% |
 
| valign=top width=33% |
"elif" benötigt kein abschliessendes "fi".
 
 
 
  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, 18:41 Uhr

Der Shell-Befehl if ist eine Verzweigung zur Erzeugung einer bedingten Abfrage.

Inhaltsverzeichnis

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