if: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
(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...)
 
Keine Bearbeitungszusammenfassung
 
(13 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 9: Zeile 9:
|-
|-
| valign=top width=33% |
| valign=top width=33% |
if <i>Befehlsfolge1</i>
<pre class=wiki>
  then <i>Befehlsliste1</i>
if <i>Befehlsfolge1</i>
[elif <i>Befehlsfolge2</i>
  then <i>Befehlsliste1</i>
  then <i>Befehlsliste2</i>]
[elif <i>Befehlsfolge2</i>
[else <i>Befehlsliste3</i>]
  then <i>Befehlsliste2</i>]
fi
[else <i>Befehlsliste3</i>]
fi
</pre>
| valign=top width=33% |
| valign=top width=33% |
if <i>Befehlsfolge1</i>
<pre class=wiki>
  then <i>Befehlsliste1</i>
if <i>Befehlsfolge1</i>
else if <i>Befehlsfolge2</i>
  then <i>Befehlsliste1</i>
  then <i>Befehlsliste2</i>
else if <i>Befehlsfolge2</i>
fi
  then <i>Befehlsliste2</i>
fi
fi
fi
</pre>
| valign=top width=33% |
| valign=top width=33% |
"elif" benötigt kein abschliessendes "fi".
<pre class=wiki>
 
if <i>Befehlsfolge1</i>
if <i>Befehlsfolge1</i>
  then <i>Befehlsliste1</i>
  then <i>Befehlsliste1</i>
elif <i>Befehlsfolge2</i>
elif <i>Befehlsfolge2</i>
  then <i>Befehlsliste2</i>
  then <i>Befehlsliste2</i>
fi
fi
</pre>
|}
|}


Zeile 37: Zeile 41:


  # <b>if ls /etc/passwd; then wc -l /etc/passwd; fi</b>
  # <b>if ls /etc/passwd; then wc -l /etc/passwd; fi</b>
bzw.
#!/bin/bash
if [ -f "/etc/passwd" ]; then
  wc -l /etc/passwd
fi</b>
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/sh
  #!/bin/bash
  if [ "$SHELL" = "/bin/bash" ]; then
  if [ "${ZEICHEN}" = "A" ] || [ "${ZEICHEN}" = "B" ]; then
   echo "your login shell is the bash (bourne again shell)"
   echo "Das Zeichen ${ZEICHEN} ist ein A oder ein B"
  else
  else
   echo "your login shell is not bash but $SHELL"
   echo "Das Zeichen ${ZEICHEN} ist kein A und kein B"
  fi
  fi


----
Falls Datei "/etc/password" vorhanden ist, so wird ihr Inhalt mit cat ausgegeben - ansonsten wird das Skript mit exit beendet.
   
   
  #!/bin/sh
  #!/bin/bassh
  if test -f /etc/password
  if [ -f "/etc/password" ]; then
   then
   cat /etc/password
    more /etc/password
  else
  else
   echo "/etc/password ist keine Datei"
   echo "/etc/password ist keine Datei"
   exit
   exit
  fi
  fi
Falls Variable a grösser oder gleich 10 ist, so wird <b>nichts</b> (:) 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 ===
* https://stackoverflow.com/questions/3224878/what-is-the-purpose-of-the-colon-gnu-bash-builtin
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 ==
{{Weblinks}}
{{url_dewikipedia|Bedingte_Anweisung_und_Verzweigung|Bedingte Anweisung und Verzweigung}}
{{Fuss}}
* http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-11.html




{{cat|Shell-Befehl}}
{{cat|Shell-Befehl}}
{{cat|Verzweigung}}
{{cat|Verzweigung}}

Aktuelle Version vom 8. Mai 2024, 20:27 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
fi
if <i>Befehlsfolge1</i>
  then <i>Befehlsliste1</i>
elif <i>Befehlsfolge2</i>
  then <i>Befehlsliste2</i>
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