if: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 10: | Zeile 10: | ||
| valign=top width=33% | | | valign=top width=33% | | ||
<pre class=wiki> | <pre class=wiki> | ||
if <i>Befehlsfolge1</i> | |||
then <i>Befehlsliste1</i> | |||
[elif <i>Befehlsfolge2</i> | |||
then <i>Befehlsliste2</i>] | |||
[else <i>Befehlsliste3</i>] | |||
fi | |||
</pre> | </pre> | ||
| valign=top width=33% | | | valign=top width=33% | | ||
<pre class=wiki> | |||
if <i>Befehlsfolge1</i> | |||
then <i>Befehlsliste1</i> | |||
else if <i>Befehlsfolge2</i> | |||
then <i>Befehlsliste2</i> | |||
fi | |||
</pre> | |||
| valign=top width=33% | | | valign=top width=33% | | ||
<pre class=wiki> | |||
if <i>Befehlsfolge1</i> | |||
then <i>Befehlsliste1</i> | |||
elif <i>Befehlsfolge2</i> | |||
then <i>Befehlsliste2</i> | |||
fi | |||
</pre> | |||
"elif" benötigt kein abschliessendes "fi". | "elif" benötigt kein abschliessendes "fi". | ||
|} | |} |
Version vom 8. Mai 2024, 20:26 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 <i>Befehlsfolge1</i> then <i>Befehlsliste1</i> [elif <i>Befehlsfolge2</i> then <i>Befehlsliste2</i>] [else <i>Befehlsliste3</i>] fi |
if <i>Befehlsfolge1</i> then <i>Befehlsliste1</i> else if <i>Befehlsfolge2</i> then <i>Befehlsliste2</i> fi |
if <i>Befehlsfolge1</i> then <i>Befehlsliste1</i> elif <i>Befehlsfolge2</i> then <i>Befehlsliste2</i> 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 bzw. #!/bin/bash if [ -f "/etc/passwd" ]; then wc -l /etc/passwd fi 44 /etc/passwd
Falls die Variable SHELL den Wert "/bin/bash" enthält, so wird ein bestimmter Text ausgegeben.
#!/bin/bash if [ "${SHELL}" = "/bin/bash" ]; then echo "Deine Anmeldeshell ist die Bash (Bourne again shell)" else echo "Deine Anmeldeshell ist nicht die Bash, sondern ${SHELL}" fi
Falls Variable ZEICHEN den Wert "A" oder "B" enthält, so wird ein entsprechender Text ausgegeben.
#!/bin/bash if [ "${ZEICHEN}" = "A" ] || [ "${ZEICHEN}" = "B" ]; then echo "Das Zeichen ${ZEICHEN} ist ein A oder ein B" else echo "Das Zeichen ${ZEICHEN} ist kein A und kein B" fi
Falls Datei "/etc/password" vorhanden ist, so wird ihr Inhalt mit cat ausgegeben - ansonsten wird das Skript mit exit beendet.
#!/bin/bassh if [ -f "/etc/password" ]; then cat /etc/password else echo "/etc/password ist keine Datei" exit fi
Falls Variable a grösser oder gleich 10 ist, so wird nichts (:) weiter gemacht. Falls sie aber kleiner oder gleich 5 ist, so wird "1" ausgegeben - ansonsten "2".
#!/bin/bash if [ "$a" -ge 10 ]; then : elif [ "$a" -le 5 ]; then echo "1" else echo "2" fi
FAQ
Wenn eine if-Bedingung keinen Befehl enthält
Beispiel - auf der Zeile mit ":" wird gar nichts passieren, die if-Bedingung wird so aber dennoch als gültig angesehen.
if command; then : else command fi
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Wikipedia | ger | Bedingte Anweisung und Verzweigungwbm | Enzyklopädischer Artikel |