Bash Range: Wie man über auf der Shell generierte Sequenzen iteriert

Bash Range How Iterate Over Sequences Generated Shell



Sie können die Zahlenfolge in bash auf zwei Arten iterieren. Eine ist durch die Verwendung seq Befehl und ein anderer besteht darin, den Bereich in der for-Schleife anzugeben. In seq Befehl, die Sequenz beginnt bei eins, die Zahl wird in jedem Schritt um eins erhöht und standardmäßig jede Zahl in jeder Zeile bis zur Obergrenze gedruckt. Wenn die Zahl bei der oberen Grenze beginnt, wird sie in jedem Schritt um eins verringert. Normalerweise werden alle Zahlen als Gleitkommazahlen interpretiert, aber wenn die Sequenz mit Integer beginnt, wird die Liste der dezimalen Integer ausgegeben. Wenn der Befehl seq erfolgreich ausgeführt werden kann, gibt er 0 zurück, andernfalls gibt er eine beliebige Zahl ungleich null zurück. Sie können die Zahlenfolge auch mit der for-Schleife mit Bereich iterieren. Beide seq Befehl und for-Schleife mit Bereich werden in diesem Tutorial anhand von Beispielen gezeigt.

Die Optionen des seq-Befehls:

Sie können verwenden seq Befehl, indem Sie die folgenden Optionen verwenden.







-in

Diese Option wird verwendet, um die Zahlen mit führenden Nullen aufzufüllen, um alle Zahlen mit gleicher Breite zu drucken.



-f-Format

Diese Option wird verwendet, um Zahlen mit einem bestimmten Format zu drucken. Gleitkommazahlen können mit %f, %g und %e als Umwandlungszeichen formatiert werden. Als Standard wird %g verwendet.



-s Zeichenfolge

Diese Option wird verwendet, um die Zahlen mit einer Zeichenfolge zu trennen. Der Standardwert ist Zeilenumbruch („ “).





Beispiele für seq-Befehle:

Sie können den seq-Befehl auf drei Arten anwenden. Sie können nur den oberen Grenzwert oder den oberen und unteren Grenzwert oder den oberen und unteren Grenzwert mit Inkrement- oder Dekrementwert für jeden Schritt verwenden. In den folgenden Beispielen werden verschiedene Verwendungen des Befehls seq mit Optionen gezeigt.

Beispiel-1: seq-Befehl ohne Option

Wenn nur die Obergrenze verwendet wird, beginnt die Zahl bei 1 und wird in jedem Schritt um eins erhöht. Der folgende Befehl gibt die Zahl von 1 bis 4 aus.



$seq 4

Ausgabe:

Wenn die beiden Werte mit dem Befehl seq verwendet werden, wird der erste Wert als Startnummer und der zweite Wert als Endnummer verwendet. Der folgende Befehl gibt die Zahl von 7 bis 15 aus.

$seq 7 fünfzehn

Ausgabe:

Wenn Sie mit dem Befehl seq drei Werte verwenden, wird der zweite Wert als Inkrement- oder Dekrementwert für jeden Schritt verwendet. Für den folgenden Befehl ist die Startnummer 10, die Endnummer 1 und jeder Schritt wird um 2 gezählt.

$seq 10 -2 1

Ausgabe:

Beispiel-2: seq mit Option –w

Der folgende Befehl druckt die Ausgabe, indem eine führende Null für die Zahl von 1 bis 9 hinzugefügt wird.

$seq -in0110

Ausgabe:

Beispiel-3: seq mit Option –s

Der folgende Befehl verwendet - als Trennzeichen für jede Sequenznummer. Die Zahlenfolge wird gedruckt, indem - als Trennzeichen hinzugefügt wird.

$seq -S-8

Ausgabe:

Beispiel-4: seq mit Option -f

Der folgende Befehl druckt 10 Datumswerte beginnend mit 1. Hier wird die Option %g verwendet, um eine Sequenznummer mit einem anderen Zeichenfolgenwert hinzuzufügen.

$seq -F '%g/04/2018' 10

Ausgang:

Bash-Bereich

Der folgende Befehl wird verwendet, um die Folge von Gleitkommazahlen mit %f zu generieren. Hier beginnt die Zahl bei 3 und wird in jedem Schritt um 0,8 erhöht und die letzte Zahl ist kleiner oder gleich 6.

$seq -F '%F' 3 0.8 6

Ausgabe:

Beispiel-5: Schreiben Sie die Sequenz in eine Datei

Wenn Sie die Zahlenfolge in eine Datei speichern möchten, ohne in der Konsole zu drucken, können Sie die folgenden Befehle verwenden. Der erste Befehl druckt die Zahlen in eine Datei namens seq.txt . Die Zahl wird von 5 bis 20 generiert und in jedem Schritt um 10 erhöht. Der zweite Befehl wird verwendet, um den Inhalt von anzuzeigen seq.txt Datei.

$ seq 5 10 20 | cat > seq.txt
$ cat seq.txt

Ausgabe:

Beispiel-6: Verwendung von seq in for-Schleife

Angenommen, Sie möchten Dateien mit den Namen fn1 bis fn10 erstellen, indem Sie for loop with seq verwenden. Erstellen Sie eine Datei mit dem Namen sq1.bash und fügen Sie den folgenden Code hinzu. Die For-Schleife wird mit dem Befehl seq 10 Mal durchlaufen und 10 Dateien in der Reihenfolge fn1, fn2, fn3…..fn10 erstellen.

#!/bin/bash
zumichin ``seq 10``
tun
berührenfn.$i
getan

Ausgabe:

Führen Sie die folgenden Befehle aus, um den Code der Bash-Datei auszuführen und zu überprüfen, ob die Dateien erstellt wurden oder nicht.

$bashsq1.bash
$ls

Beispiele für for-Schleife mit Bereich:

Beispiel-7: For-Schleife mit Bereich

Die Alternative des seq-Befehls ist range. Sie können range in for-Schleife verwenden, um eine Zahlenfolge wie seq zu generieren. Schreiben Sie den folgenden Code in eine Bash-Datei namens sq2.bash . Die Schleife wird 5 Mal durchlaufen und die Quadratwurzel jeder Zahl in jedem Schritt gedruckt.

#!/bin/bash
zumnin {1..5}
tun
((Ergebnis=n*n))
rauswerfen $n Quadrat=$Ergebnis
getan

Ausgabe:

Führen Sie den Befehl aus, um das Skript der Datei auszuführen.

$bashsq2.bash

Beispiel-8: For-Schleife mit Bereich und Inkrementwert

Standardmäßig wird die Zahl in jedem Schritt im Bereich wie seq. um eins erhöht. Sie können auch den Inkrementwert im Bereich ändern. Schreiben Sie den folgenden Code in eine Bash-Datei namens sq3.bash . Die for-Schleife im Skript wird 5 Mal durchlaufen, jeder Schritt wird um 2 erhöht und alle ungeraden Zahlen zwischen 1 und 10 ausgegeben.

#!/bin/bash
rauswerfen 'alle ungeraden Zahlen von 1 bis 10 sind'
zumichin {1..10..2}
tun
rauswerfen $i;
getan

Ausgabe:

Führen Sie den Befehl aus, um das Skript der Datei auszuführen.

$bashsq3.bash

Wenn Sie mit der Zahlenfolge arbeiten möchten, können Sie alle Optionen verwenden, die in diesem Tutorial gezeigt werden. Nach Abschluss dieses Tutorials können Sie den Befehl seq und die for-Schleife mit Range effizienter in Ihrem Bash-Skript verwenden.