GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Scripting:3 Anleitungen für While-Schleifen in Bash

Shell-Scripting, insbesondere Bash-Scripting, ist eine großartige Möglichkeit, sich wiederholende oder langwierige Aufgaben auf Ihren Systemen zu automatisieren. Warum tippen, wenn Sie Skripte freihändig planen und ausführen können? Eines der vielen Skriptkonstrukte ist die Schleife. Eine Schleife ist ein Codeabschnitt, der Daten aufnimmt oder generiert und dann eine Operation an den Daten durchführt und dann den Prozess erneut beginnt, bis eine Bedingung erfüllt ist, das Skript unterbrochen wird oder die Eingabedaten erschöpft sind. Wenn Sie Bash-Scripting verwenden, ist es manchmal nützlich, Aktionen mithilfe einer Form von Schleifen auszuführen.

[Leser mochten auch: Fünf Wege zur Verwendung von Weiterleitungsoperatoren in Bash]

Die grundlegenden Schleifenbefehle in Bash-Skripten sind for und while .

  • for Schleifen werden normalerweise verwendet, wenn Sie eine bekannte, endliche Liste haben, z. B. eine Reihe von Zahlen, eine Liste von Elementen oder Zähler.
  • while Schleifen können mit Listen verwendet werden, sind aber auch für Bedingungen nützlich, die dies nicht tun haben eine bekannte Grenze. Sie können es verwenden, um Befehle während auszuführen eine Bedingung wahr ist (oder die Logik umkehren und ausführen, während die Bedingung falsch ist).

Obwohl es (Wortspiel beabsichtigt) verschiedene Möglichkeiten gibt, Schleifen auszuführen, konzentriere ich mich in diesem Artikel auf Beispiele, die while verwenden Schleifen.

1. Eine einfache While-Schleife

Stellen Sie sich vor, Sie installieren eine riesige Anwendung und befürchten, dass sie möglicherweise zu viel Speicherplatz im Dateisystem belegt.

Statt df auszuführen In einem separaten Terminal können Sie einen einfachen Befehl ausführen, um die Festplattenauslastung jede Sekunde zu überwachen. Auf diese Weise können Sie den Installationsvorgang unterbrechen, wenn Sie sehen, dass dieses Limit erreicht wird.

while true
do
  df -k | grep home
  sleep 1
done

In diesem Fall führen Sie die Schleife mit einem true aus Bedingung, was bedeutet, dass es für immer ausgeführt wird oder bis Sie CTRL-C. drücken Daher müssen Sie es im Auge behalten (andernfalls werden die Ressourcen des Systems weiterhin verwendet).

Hinweis :Wenn Sie eine Schleife wie diese verwenden, müssen Sie einen Befehl wie sleep einfügen um dem System zwischen den Ausführungen etwas Zeit zum Atmen zu geben. Das ununterbrochene Ausführen von irgendetwas könnte zu einem Leistungsproblem werden, insbesondere wenn die Befehle innerhalb der Schleife E/A-Operationen beinhalten.

2. Warten, bis eine Bedingung wahr wird

Es gibt Variationen dieses Szenarios. Sie wissen beispielsweise, dass der Prozess irgendwann ein Verzeichnis erstellen wird, und Sie warten nur auf diesen Moment, um andere Validierungen durchzuführen.

Sie können eine while haben Schleife, um die Existenz dieses Verzeichnisses zu prüfen und nur dann eine Nachricht zu schreiben, wenn das Verzeichnis nicht existiert.

Wenn Sie etwas Ausgefeilteres tun möchten, können Sie ein Skript erstellen und einen deutlicheren Hinweis darauf zeigen, dass die Schleifenbedingung wahr wurde:

#!/bin/bash

while [ ! -d directory_expected ]
do
   echo "`date` - Still waiting" 
   sleep 1
done

echo "DIRECTORY IS THERE!!!"

3. Verwenden einer While-Schleife zum Manipulieren einer Datei

Eine weitere nützliche Anwendung eines while Schleife besteht darin, sie mit dem read zu kombinieren Befehl, um schnell auf Spalten (oder Felder) aus einer Textdatei zuzugreifen und einige Aktionen mit ihnen auszuführen.

Im folgenden Beispiel wählen Sie einfach die Spalten aus einer Textdatei mit einem vorhersagbaren Format aus und drucken die Werte, die Sie verwenden möchten, um /etc/hosts zu füllen Datei.

Hier wird davon ausgegangen, dass die Datei Spalten hat, die durch Leerzeichen oder Tabulatoren getrennt sind, und dass es keine gibt Leerzeichen im Inhalt der Spalten. Das könnte den Inhalt der Felder verschieben und Ihnen nicht das geben, was Sie brauchen.

Beachten Sie, dass Sie nur eine einfache Operation ausführen, um Informationen zu extrahieren und zu manipulieren, und sich nicht um die Wiederverwendbarkeit des Befehls kümmern. Ich würde dies als einen dieser "schnellen und schmutzigen Tricks" einstufen.

Wenn Sie dies natürlich wiederholt tun würden, sollten Sie es von einem Skript aus ausführen, richtige Namen für die Variablen verwenden und all diese bewährten Verfahren (einschließlich der Umwandlung des Dateinamens in ein Argument und der Definition, wohin die Ausgabe gesendet werden soll, aber heute ist das Thema while Schleifen).

#!/bin/bash

cat servers.txt | grep -v CPU | while read servername cpu ram ip
do
   echo $ip $servername
done

[ Lernen Sie die Grundlagen der Verwendung von Kubernetes in diesem kostenlosen Spickzettel. ] 

Abschluss

while Schleifen sind nützlich in Skripts, die davon abhängen, ob eine bestimmte Bedingung wahr oder falsch ist, aber Sie können sie auch interaktiv verwenden, um eine Bedingung zu überwachen.

Die wichtigsten Dinge, die Sie sich merken sollten, sind:

Machen Sie sich immer klar, was die Bedingung für das Ende ist die Schleife. Wenn das etwas ist, von dem Sie erwarten, dass Sie es selbst mit CTRL-C erledigen , dann behalten Sie Ihren Befehl im Auge. Denken Sie darüber nach wie schnell Sie möchten, dass jeder Schleifenzyklus wiederholt wird. Wenn Sie eine Operation ausführen, die E/A innerhalb der Schleife beinhaltet, wird dies zu einem kritischen Aspekt der Planung.

In diesem Sinne viel Spaß while du kannst.


Linux
  1. Bash-Anfängerserie Nr. 8:Schleifen in Bash

  2. Beispiele für Bash-For- und While-Schleifen

  3. Bleiben Sie auf dem Laufenden – Beispiele für Bash-For-, While- und Until-Loops

  4. Bash für Schleifenbeispiele

  5. Verwendung von und in der Bash-While-Schleife

Bash-Skripting – While- und Until-Schleife mit Beispielen erklärt

Bash-Scripting – For-Schleife mit Beispielen erklärt

Bash For-Schleifen mit Beispielen

Shell-Scripting für Anfänger – So schreiben Sie Bash-Scripts unter Linux

Bash-Scripting Teil 2 – For- und While-Schleifen mit Beispielen

Die Bash FOR-Schleife erklärt und vereinfacht