Skip to main content

WIE MAN: Linux Shell Script Beispiele für die BASH 'für' Schleife - 2021

Bash Tutorial #1 - Scripten für das Linux-Terminal (September 2021).

Bash Tutorial #1 - Scripten für das Linux-Terminal (September 2021).
Anonim

BASH (Bourne Again Shell) ist eine Skriptsprache, die von den meisten Linux- und UNIX-basierten Betriebssystemen verwendet wird.

Sie können BASH-Befehle innerhalb eines Terminalfensters nacheinander ausführen oder die Befehle zu einer Textdatei hinzufügen, um ein Shell-Skript zu erstellen.

Das Beste am Schreiben von Shell-Skripten ist, dass Sie sie immer wieder ausführen können. Stellen Sie sich zum Beispiel vor, Sie müssen einen Benutzer zu einem System hinzufügen, seine Berechtigungen festlegen und die Startumgebung verwalten. Sie können die Befehle entweder auf ein Blatt Papier schreiben und ausführen, wenn Sie neue Benutzer hinzufügen, oder Sie können ein einzelnes Skript schreiben und Parameter einfach an dieses Skript übergeben.

Skriptsprachen wie BASH haben ähnliche Programmierkonstrukte wie andere Sprachen. Beispielsweise können Sie Importparameter verwenden, um Eingaben von der Tastatur zu erhalten und als Variablen zu speichern. Sie können dann das Skript veranlassen, eine bestimmte Aktion basierend auf dem Wert der Eingabeparameter auszuführen.

Ein Schlüsselelement jeder Programmier- und Skriptsprache ist die Möglichkeit, immer wieder denselben Code auszuführen.

Es gibt verschiedene Möglichkeiten, Code zu wiederholen (auch als Schleifen bezeichnet). In dieser Anleitung erfahren Sie, wie Sie eine "for" -Schleife schreiben.

EIN zum Schleife wiederholt einen bestimmten Abschnitt des Codes immer wieder. Sie sind nützlich, damit eine Reihe von Befehlen so lange ausgeführt werden kann, bis eine bestimmte Bedingung erfüllt ist. Danach werden sie gestoppt.

In diesem Handbuch werden fünf Möglichkeiten gezeigt, wie Sie die for-Schleife in einem BASH-Skript verwenden können.

Bevor Sie beginnen

Bevor Sie mit den for-Schleife-Beispielen beginnen, müssen Sie ein Terminalfenster öffnen und die folgenden Schritte ausführen:

  1. Eingeben mkdir-Skripte (erfahren Sie hier mehr über mkdir).

  2. Eingeben CD-Skripte (Dies ändert das Verzeichnis in Skripte ).

  3. Eingeben nano beispiel.sh (woher n ist das Beispiel, an dem Sie gerade arbeiten.

  4. Geben Sie das Skript ein.

  5. Drücken Sie STRG + O zu speichern und STRG + X beenden.

  6. Lauf bash examplen.sh (wieder mit n das Beispiel sein, mit dem Sie arbeiten).

Eine Liste durchlaufen

#! / bin / bashfür Nummer in 1 2 3 4 5doecho $ numberdoneexit 0

Die BASH-Methode der Verwendung von "for" -Schleifen unterscheidet sich etwas von der Art, wie die meisten anderen Programmier- und Skriptsprachen "für" -Schleifen behandeln. Brechen wir das Skript auf.

In einer BASH "for" -Schleife alle, die Anweisungen zwischen tun und erledigt werden für jeden Eintrag in der Liste einmal ausgeführt.

Im obigen Beispiel ist die Liste alles, was nach dem Wort kommt im (d. h. 1 2 3 4 5).

Bei jeder Wiederholung der Schleife wird der nächste Wert in der Liste in die nach dem Wort angegebene Variable eingefügt "zum" . In der obigen Schleife wird die Variable aufgerufen Nummer .

Die Echo-Anweisung wird verwendet, um Informationen auf dem Bildschirm anzuzeigen.

Daher werden in diesem Beispiel die Zahlen 1 bis 5 verwendet und nacheinander auf dem Bildschirm ausgegeben:

  • 1
  • 2
  • 3
  • 4
  • 5

Wie man zwischen einem Start- und einem Endpunkt eine Schleife bildet

Das Problem mit dem obigen Beispiel besteht darin, dass es, wenn Sie eine größere Liste (z. B. 1 bis 500) verarbeiten möchten, sehr lange dauern muss, um alle Zahlen zuerst einzugeben.

Dies bringt uns zum zweiten Beispiel, das zeigt, wie ein Start- und Endpunkt angegeben wird:

#! / bin / bashfür Nummer in {1..10} doecho "$ number" doneexit 0

Die Regeln sind grundsätzlich gleich. Die Werte nach dem Wort " im" Erstellen Sie die Liste zum Durchlaufen, und jeder Wert in der Liste wird in die Variable (d. h. number) eingefügt. Jedes Mal, wenn die Schleife durchläuft, werden die Anweisungen dazwischen tun und erledigt durchgeführt werden.

Der Hauptunterschied ist die Art und Weise, wie die Liste gebildet wird. Die geschweiften Klammern {} bezeichnen im Grunde einen Bereich, und der Bereich ist in diesem Fall 1 bis 10 (die beiden Punkte trennen den Anfang und das Ende eines Bereichs).

Dieses Beispiel durchläuft daher jede Zahl zwischen 1 und 10 und gibt die Zahl wie folgt an den Bildschirm aus:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Die gleiche Schleife könnte so geschrieben worden sein, wobei die Syntax identisch zum ersten Beispiel war:

für Nummer in 1 2 3 4 5 6 7 8 9 10

So überspringen Sie Zahlen in einem Bereich

Im vorherigen Beispiel wurde gezeigt, wie zwischen Start- und Endpunkt geschliffen wird. Wir werden uns nun mit dem Überspringen von Zahlen im Bereich beschäftigen.

Stellen Sie sich vor, Sie wollen eine Schleife zwischen 0 und 100, aber nur jede zehnte Zahl anzeigen. Das folgende Skript zeigt, wie genau das geht:

#! / bin / bashfür Nummer in {0..100..10} doecho "$ number" doneexit 0

Die Regeln sind grundsätzlich gleich. Es gibt eine Liste, eine Variable und eine Reihe von Anweisungen, die zwischen ausgeführt werden müssen tun und erledigt . Die Liste sieht diesmal so aus: {0..100..10}.

Die erste Zahl ist 0 und die Endnummer ist 100. Die dritte Zahl (10) gibt die Anzahl der Elemente in der Liste an, die übersprungen werden.

Das obige Beispiel zeigt daher die folgende Ausgabe:

  • 0
  • 10
  • 20
  • 30
  • 40
  • 50
  • 60
  • 70
  • 80
  • 90
  • 100

Eine traditionellere Suche nach Schleife

Die BASH-Methode zum Schreiben von Schleifen ist im Vergleich zu anderen Programmiersprachen etwas merkwürdig.

Sie können jedoch eine for-Schleife in einem ähnlichen Stil wie die Programmiersprache C schreiben:

#! / bin / bashfor ((number = 1; number <100; number ++)) {if (($ number% 5 == 0)) thenecho "$ number ist teilbar durch 5" fi} exit 0

Die Schleife beginnt mit der Einstellung der Variablennummer auf 1 (Anzahl = 1 ). Die Schleife wird wiederholt, während der Wert einer Zahl unter 100 liegt ( Anzahl <100 ). Der Wert von Nummer ändert sich durch Hinzufügen von 1 nach jeder Iteration ( Nummer ++ ).

Alles zwischen den geschweiften Klammern wird durch jede Wiederholung der Schleife ausgeführt.

Das Bit zwischen den geschweiften Klammern prüft den Wert von a Nummer, teilt es durch 5 und vergleicht den Rest mit 0. Wenn der Rest 0 ist, ist die Zahl durch 5 teilbar und wird auf dem Bildschirm angezeigt.

Zum Beispiel:

  • 5 ist teilbar durch 5
  • 10 ist teilbar durch 5
  • 15 ist teilbar durch 5

Wenn Sie die Schrittgröße der Iteration ändern möchten, können Sie die Zahl ++ als Abschnitt ändern Zahl = Zahl + 2 , Zahl = Zahl + 5 , oder Zahl = Zahl + 10 usw.

Dies kann weiter reduziert werden auf Anzahl + = 2 oder Zahl + = 5 .

Ein praktisches Beispiel

For-Schleifen können mehr als Listen von Zahlen durchlaufen. Sie können die Ausgabe anderer Befehle tatsächlich als Liste verwenden.

Das folgende Beispiel zeigt, wie Audiodateien von MP3 in WAV konvertiert werden:

#! / bin / bashfür Datei in ./*.mp3dompg -w ./wavs/"${file}".wav "$ file" fertig

Die Liste in diesem Beispiel enthält alle Dateien mit der Erweiterung .MP3 im aktuellen Ordner und die Variable ist a Datei .

Das mpg Befehl konvertiert die MP3-Datei in WAV. Sie müssen dies jedoch wahrscheinlich zuerst mit Ihrem Paketmanager installieren.