{"id":21245,"date":"2025-11-10T12:49:30","date_gmt":"2025-11-10T11:49:30","guid":{"rendered":"https:\/\/linux-bibel.at\/?p=21245"},"modified":"2025-11-12T06:13:44","modified_gmt":"2025-11-12T05:13:44","slug":"die-shell-working-in-a-coalmine-teil-2","status":"publish","type":"post","link":"https:\/\/linux-bibel.at\/index.php\/2025\/11\/10\/die-shell-working-in-a-coalmine-teil-2\/","title":{"rendered":"die shell &#8211; working in a coalmine Teil 2"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Die FOR-Schleife<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Im ersten Teil haben wir uns mit einem Telefonbuch besch\u00e4ftigt. 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.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bleiben wir zun\u00e4chst bei der FOR-Schleife. Die For-Schleife hat jetzt folgenden Aufbau. Das Keywort &#8222;for&#8220; und dann die Variable und eine Liste. Und jetzt haben wir den ersten Unterschied in den diversen shells. In der bash w\u00e4re jetzt auch eine Bedingung und ein Z\u00e4hler m\u00f6glich (C Syntax). Heute wollen wir noch nichts damit machen, wir begn\u00fcgen uns mit einer Liste und dem zweiten Keywort &#8222;in&#8220;. Dann kommen die Keyw\u00f6rter &#8222;do&#8220; und &#8222;done&#8220;, die die Schleife starten bzw. beenden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">for  VARIABLE in LISTE<br>do<br>    befehl &#8230;<br>    ..<br>    ..<br>done<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn wir unser Telefonbuch Zeile f\u00fcr Zeile ansehen wollen, dann k\u00f6nnen wir das mit einer Schleife machen. Dazu muss ich noch etwas erkl\u00e4ren. 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. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for ZEILE in `<span style=\"background-color: initial;font-family: inherit;font-size: inherit;text-align: initial;color: initial\">cat telefonbuch.txt <\/span>`\ndo\n   echo \"$ZEILE\" \ndone\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Tabs, Blanks(Leertaste) und NewLine<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><br>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\u00fcrde mir der Datensatz getrennt werden. Bei 2 Vornamen dann h\u00e4tte ich eine doppelte Trennung. <br>Gott sei Dank gibt es die Variable IFS. Wenn ich die Variable jetzt mit &#8222;nichts&#8220; belege, dann erfolgt keine Trennung mehr bei Blank und Tab.<br><br>Das mache ich durch das Kommando <br>IFS=&#8220;&#8220;<br>Wenn ich vorher noch export IFS=&#8220; schreibe dann gilt das auch f\u00fcr alle weiteren Subshells. Beim ausloggen und neuem Anmelden habe ich wieder meine default Werte. Oder schneller geht es, wenn ich ein unset IFS durchf\u00fchre und die Variable aus meinem Speicher l\u00f6sche. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um den Unterschied merkbar zu machen, setzen wir IFS=&#8220;;&#8220; also den Strichpunkt als Trennzeichen . <br>Wenn wir jetzt den Befehle nochmals ausf\u00fchren bekommen wir jedes einzelne Feld als eigene Zeile angezeigt. unset IFS setzt alles wieder auf default.  <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Klasssifizierung<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ungef\u00e4hrlich<\/li>\n\n\n\n<li>EDV Kentnisse von Vorteil<\/li>\n\n\n\n<li>Einf\u00fchrung in das\u00a0<a href=\"https:\/\/linux-bibel.at\/index.php\/enzyklopaedie\/script\/\">Script<\/a>en\/<a href=\"https:\/\/linux-bibel.at\/index.php\/enzyklopaedie\/shell\/\">Shell<\/a><\/li>\n<\/ul>\n<div class=\"pld-like-dislike-wrap pld-custom\">\r\n    <div class=\"pld-like-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-like-trigger pld-like-dislike-trigger  \" title=\"Gef\u00e4llt mir\" data-post-id=\"21245\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                            <img src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/Daumen-Hoch.png\" alt=\"Gef\u00e4llt mir\" \/>\r\n            <\/a>\r\n    <span class=\"pld-like-count-wrap pld-count-wrap\">8    <\/span>\r\n<\/div><div class=\"pld-dislike-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-dislike-trigger pld-like-dislike-trigger  \" title=\"Gef\u00e4llt mir nicht\" data-post-id=\"21245\" data-trigger-type=\"dislike\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                            <img src=\"https:\/\/linux-bibel.at\/wp-content\/uploads\/2023\/12\/Daumen-Runter.png\" alt=\"Gef\u00e4llt mir nicht\" \/>\r\n            <\/a>\r\n    <span class=\"pld-dislike-count-wrap pld-count-wrap\">2<\/span>\r\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Folge 2<\/p>\n","protected":false},"author":52,"featured_media":21275,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[61,4],"tags":[1442,1444,1435],"class_list":["post-21245","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scripts","category-terminal","tag-einfuehrung-in-das-scripten-shell","tag-uedv-kentnisse-von-vorteil","tag-ungefaehrlich"],"_links":{"self":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/21245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/users\/52"}],"replies":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/comments?post=21245"}],"version-history":[{"count":7,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/21245\/revisions"}],"predecessor-version":[{"id":21252,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/posts\/21245\/revisions\/21252"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/media\/21275"}],"wp:attachment":[{"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/media?parent=21245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/categories?post=21245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linux-bibel.at\/index.php\/wp-json\/wp\/v2\/tags?post=21245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}