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

Die While-Schleife in Shell-Skripten

Heute lernen wir etwas über die While-Schleife in Shell-Skripten. Schleifen sind ein wesentlicher Bestandteil jeder Programmiersprache. Wenn wir einen Code schreiben, um eine Reihe von Anweisungen 15 Mal auszuführen, wäre es unproduktiv, dieselbe Anweisung immer wieder zu schreiben.

Schleifen sparen dem Programmierer Zeit.

Eine der am häufigsten verwendeten Schleifen in jeder Programmiersprache ist die While-Schleife. Wir verwenden die While-Schleife in Shell-Skripten, um eine Reihe von Anweisungen zu wiederholen, solange eine bestimmte Bedingung nach jeder Iteration erfüllt ist.

Wie funktioniert eine While-Schleife in Shell-Skripten?

Die While-Schleife in Shell-Skripten hilft Ihnen, Ihren Code effizient zu gestalten, indem sie die Menge an Code, die Sie schreiben müssen, reduziert.

Es ist praktisch, wenn Sie etwas in Ihrem Skript immer wieder tun müssen. Lassen Sie uns die Funktionsweise einer While-Schleife in Shell-Skripten anhand ihrer Syntax verstehen:

while [ condition ] 
do 
    statement 1
    statement 2
done

Hier haben wir drei Schlüsselwörter, nämlich while , tun und fertig .

  • Das erste Schlüsselwort „while“ gibt den Anfang der Schleife an, wenn wir das Shell-Skript ausführen.
  • Danach folgt eine Bedingung in runden Klammern.
  • Das Schlüsselwort ‚do‘ wird vor den auszuführenden Anweisungen in der Schleife verwendet.
  • Jede While-Schleife besteht aus einer Bedingung, gefolgt von einer Reihe von Befehlen.
  • Dann stoßen wir auf das Schlüsselwort done, das das Ende der Schleife markiert.

Stellen Sie sich do und done als öffnende und schließende Klammern in anderen Programmiersprachen vor

Zunächst wird die Bedingung ausgewertet. Wenn die Bedingung WAHR ist, gelten die folgenden Anweisungen erfüllen wird durchgeführt. Dies wiederholt sich, bis es einen Punkt gibt, an dem die Bedingung zu FALSE ausgewertet wird.

Sobald die Bedingung falsch ist, wird die Schleife beendet.

Beachten Sie unbedingt, dass beim Shell-Scripting wie bei der C-Programmierung zwischen Groß- und Kleinschreibung unterschieden wird. Daher müssen Sie bei der Verwendung der Schlüsselwörter in Ihrem Code vorsichtig sein.

Wenn Sie mehr über bedingte Anweisungen erfahren möchten, klicken Sie hier, um mehr über if-else in Shell-Skripten zu erfahren.

While-Schleife in Shell-Skripten verwenden

Nur die Theorie durchzulesen und einen Blick auf die Syntax zu werfen, würde Ihnen nicht weiterhelfen, bis Sie sie praktisch in Ihrem Code verwenden können.

Sehen Sie sich daher zum besseren Verständnis des Konzepts und seiner praktischen Anwendung das folgende Beispiel an.

While-Schleife zum Drucken der ersten 5 Zahlen

Es ist immer am besten, mit etwas Grundlegendem zu beginnen. Hier werden wir die While-Schleife in Shell-Skripten verwenden, um die ersten 5 natürlichen Zahlen auf unserem Bildschirm auszugeben.

Dieses einfache Skript macht eine Schleife, solange der Wert für die Variable 'a' kleiner als ('-lt') die 5 ist. Die Bedingung gilt für Zahlen von 1 bis 4, daher wird der Befehl für dieselben ausgeführt.

Für jede Zahl größer oder gleich 5 ist die Bedingung falsch. Daher wird die Schleife beendet. So wird der Code geschrieben.

#!/bin/sh
a=1
while [ $a -lt 5 ]
do
    echo $a
    ((a++))
done

Ermitteln der Fakultät mithilfe der While-Schleife in Shell-Skripten

Eines der praktischeren Beispiele wäre die Verwendung der Funktionalität einer While-Schleife, um eine Aufgabe abzuschließen. Lassen Sie uns die Fakultät einer Zahl finden.

Der folgende Code zeigt, wie wir diese Aufgabe mit der While-Schleife erledigen können.

#!/bin/sh
counter=5
factorial=1
while [ $counter -gt 0 ]
do 
      factorial=$(( $factorial * $counter ))
      ((counter--))
done 
echo $factorial

Wie Sie sehen können, wird die Fakultät für die While-Schleife korrekt als 120 ausgegeben.

Eine Datei in Shell-Skripten mit der While-Schleife lesen

Wenn wir es mit Textdateien zu tun haben, stellt sich die While-Schleife als ein wichtiges Werkzeug heraus, da wir die Schleife dazu bringen können, die gesamte Datei zu lesen, indem wir while read verwenden Befehl.

Dieser Befehl kann uns helfen, den Inhalt einer Datei von der Befehlszeile aus zu lesen. Der folgende Code verwendet diese Funktionalität der While-Schleife im Shell-Skript, um den Inhalt einer Datei Zeile für Zeile zu lesen und ihn dann auf dem Bildschirm des Benutzers auszugeben.

#!/bin/bash
FILE=$1
while read line
do
    # use $line variable to process line
    echo $line
done < $FILE

Wie Sie sehen können, habe ich den Dateinamen als Argument übergeben, weil wir in unserem Shell-Skript $1 verwendet und es der FILE-Variablen zugewiesen haben. Das bedeutet, dass das erste Argument als Dateiname akzeptiert wird und das Skript mit dem Lesen der Datei fortfährt.

Außerdem verwenden wir den Eingabeumleitungsoperator innerhalb des Skripts nach dem Fertigstellen, sodass wir den Dateinamen direkt als Argument verwenden können, wenn das Skript ausgeführt wird.

Wenn Sie diesen Teil überspringen, sieht Ihr Befehl in etwa so aus:

bash file.sh < filename.txt

Sie sehen also, leiten Sie die Eingabe innerhalb des Skripts oder während der Ausführung des Skripts um. Die Ergebnisse sind die gleichen.

Schlussfolgerung

Die While-Schleife in Shell-Skripten ist eine Schlüsselwaffe im Arsenal jedes Shell-Programmierers. Es ist das beste Werkzeug, wenn Sie eine Reihe von Anweisungen ausführen müssen, die basierend auf einer Bedingung wiederholt werden.

Durch die Automatisierung der Ausführung bestimmter Anweisungen müssen Sie nicht nur weniger Code schreiben, sondern gewinnen auch Zeit, die Sie für wichtigere Aufgaben wie das Debuggen verwenden können.

Wir hoffen, dass dieses Tutorial Ihnen helfen konnte, die Verwendung der While-Schleifenfunktion zu verstehen. Wenn Sie Fragen, Feedback oder Vorschläge haben, können Sie sich gerne in den Kommentaren unten an uns wenden.


Linux
  1. Power(Shell) an die Menschen

  2. Setuid für Shell-Skripte zulassen?

  3. Der Sinn des externen Befehls „cd“?

  4. Assoziative Arrays in Shell-Skripten?

  5. Shell-Skript While-Schleife:[um eine Pipeline herum fehlt `]'

Bash-while-Schleife

Was ist die Shell unter Linux?

So erstellen Sie Shell-Skripte

Arrays in Shell-Skripten

Wie verwende ich if-else in Shell-Skripten?

Die for-Schleife in Shell-Skripten verstehen