Die FOR-Schleife

Im ersten Teil haben wir uns mit einem Telefonbuch beschäftigt. Und mit ein paar Befehlen es auch ausgewertet. Heute wollen wir dieses Telefonbuch in Schleifen bearbeiten. Ja die shell kann mehrere Arten von Schleifen, die FOR und die WHILE/UNTIL Schleifen. Der Unterschied liegt u.a. im minimalen Durchlauf.

Bleiben wir zunächst bei der FOR-Schleife. Die For-Schleife hat jetzt folgenden Aufbau. Das Keywort „for“ und dann die Variable und eine Liste. Und jetzt haben wir den ersten Unterschied in den diversen shells. In der bash wäre jetzt auch eine Bedingung und ein Zähler möglich (C Syntax). Heute wollen wir noch nichts damit machen, wir begnügen uns mit einer Liste und dem zweiten Keywort „in“. Dann kommen die Keywörter „do“ und „done“, die die Schleife starten bzw. beenden.

for VARIABLE in LISTE
do
befehl
..
..
done

Wenn wir unser Telefonbuch Zeile für Zeile ansehen wollen, dann können wir das mit einer Schleife machen. Dazu muss ich noch etwas erklären. In der shell kann ich Sub-Prozesse starten, die mir das Ergebnis (Liste) in meine Hauptshell liefern. Solche Sub-Shells werden mit dem Zeichen ` (Accent grave) eingeschlossen.

for ZEILE in `cat telefonbuch.txt `
do
   echo "$ZEILE" 
done

Tabs, Blanks(Leertaste) und NewLine


Da sind die leidlichen Zeichen die das scripten so schwer machen. Diese 3 Zeichen trennen eine Liste von Haus aus in einzelne Felder auf. Will ich das? Jein. Es ist ganz praktisch, wenn ich Daten ohne Blank habe, Wenn ich in einem Feld allerdings Vor und Nachname speichere, dann würde mir der Datensatz getrennt werden. Bei 2 Vornamen dann hätte ich eine doppelte Trennung.
Gott sei Dank gibt es die Variable IFS. Wenn ich die Variable jetzt mit „nichts“ belege, dann erfolgt keine Trennung mehr bei Blank und Tab.

Das mache ich durch das Kommando
IFS=““
Wenn ich vorher noch export IFS=“ schreibe dann gilt das auch für alle weiteren Subshells. Beim ausloggen und neuem Anmelden habe ich wieder meine default Werte. Oder schneller geht es, wenn ich ein unset IFS durchführe und die Variable aus meinem Speicher lösche.

Um den Unterschied merkbar zu machen, setzen wir IFS=“;“ also den Strichpunkt als Trennzeichen .
Wenn wir jetzt den Befehle nochmals ausführen bekommen wir jedes einzelne Feld als eigene Zeile angezeigt. unset IFS setzt alles wieder auf default.

Klasssifizierung

  • ungefährlich
  • EDV Kentnisse von Vorteil
  • Einführung in das Scripten/Shell

Categories:

Schreibe einen Kommentar

Noch keine Reaktion

Neue Themen im Forum
Petition gegen die Ausstattung ba …An der Petition soeben teilgenommen.... Weiterlesen
Statistik Oktober 2025Ja, so gesehen haben wir im Jahr 2025 bis Ende Oktober bereits übe … Weiterlesen
Internationaler Strafgerichtshof …Oh nein, gab's/gibt's die Abhängigkeitsbefürchtungen nic … Weiterlesen
Kategorien im Wiki
WIKI-Beiträge des Monates

Die Beiträge des Monates finden Sie im Kalender unter den blau markierten Tageszahlen.

November 2025
M D M D F S S
 12
3456789
10111213141516
17181920212223
24252627282930
Archiv