Zum Inhalt springen

Kategorie:Bash/Kontrollstrukturen: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 12: Zeile 12:
== Schleifen ==
== Schleifen ==
[[Bash/Schleifen]]
[[Bash/Schleifen]]
= TMP =
=== Bedingte Ausführung  ===
Die auch als '''Flusskontrolle '''bekannten Mechanismen ermöglichen eine kontrollierte Beeinflussung des Programmablaufs. Die Bash stellt die '''if...fi '''und '''case...esac '''-Konstrukte zur Verfügung.
Erstere Form wird meist zur Unterscheidung einiger weniger Fälle (meist 2) verwendet. Die Syntax lautet:
'''if '''Liste von Kommandos; '''then'''
    Liste von Kommandos
'''[elif''' Liste von Kommandos; '''then'''
    Liste von Kommandos]
'''[else'''
    Liste von Kommandos]
'''fi'''
Von den angegebenen Zweigen werden die Kommandos höchstens eines Zweiges ausgeführt. Entweder die des ersten Zweiges, dessen Bedingung erfüllt ist oder der optionale "else"-Zweig, falls keine Bedingung erfüllt wurde.
Die Bedingung selbst ist der Rückgabewert der Liste der Kommandos (meist also der Rückgabewert des letzten Kommandos der Liste).
Das "case"-Konstrukt wird bei einer höheren Anzahl an Auswahlkriterien bevorzugt. Prinzipiell kann mittels "case" jede "if"-Bedingung abgebildet werden.
Ein wesentlicher Unterschied ist die mögliche Abarbeitung mehrerer Fälle, da alle Anweisungen ab der ersten zutreffenden Bedingung bis zu einem expliziten Verlassen des Konstrukts ausgeführt werden (d.h. ist eine Bedingung erfüllt, werden die nachfolgenden ignoriert).
'''case''' Bedingung '''in'''
    Muster [ | Muster ])
      Liste von Kommandos
      [;;]
  [Muster [ | Muster ])
      Liste von Kommandos
      [;;]]
'''esac'''
Die Bedingung muss ein Token sein. Die Muster unterliegen denselben Expansionen wie Pfadnamen und dürfen somit Metazeichen enthalten.
Stimmt ein Muster mit der Bedingung überein, werden alle nachfolgenden Kommandos bis zum Verlassen des Konstrukts mittels ";;" oder bis zum abschließenden "esac" ausgeführt.
Der typische Anwendungsbereich für "if"- und "case"-Konstrukte ist die Shellprogrammierung und in diesem Zusammenhang werden Ihnen noch genügend Beispiele zur Benutzung begegnen.
'''if test $(id | awk -F'[=(]' '{print $2}';) -eq "0"; then echo Superuser; else echo Normaler User; fi'''
Normaler User
'''su -'''
Password:
[mailto:root@lincln01 root@][mailto:root@lincln01 lincln01]> '''if test $(id | awk -F'[=(]' '{print $2}';) -eq "0"; then echo Superuser; else echo Normaler User; fi'''
Superuser
Das (zugegeben... etwas konstruierte) Beispiel entscheidet, ob der aufrufende Benutzer als Root oder als "normaler" Nutzer arbeitet.
Die Verwendung des builtin-Kommandos '''test '''ist typisch für Bedingungen.




[[Kategorie:Bash]]
[[Kategorie:Bash]]

Version vom 14. Oktober 2025, 10:17 Uhr

Bash/Kontrollstrukturen - Verzweigungen, Schleifen, Fallunterscheidungen

Beschreibung

Ablauf eines Linux-Shell-Skripts steuern

Bedingungen

Bash/Bedingungen

Fallunterscheidung

Bash/Fallunterscheidung

Schleifen

Bash/Schleifen

Seiten in der Kategorie „Bash/Kontrollstrukturen“

Folgende 4 Seiten sind in dieser Kategorie, von 4 insgesamt.