In diesem Artikel behandeln wir die Grundlagen des Sequenzausdrucks in Bash.
Der Bash-Sequenzausdruck generiert einen Bereich von ganzen Zahlen oder Zeichen, indem er einen Anfangs- und den Endpunkt des Bereichs definiert. Es wird im Allgemeinen in Kombination mit for
verwendet Schleifen.
Bash-Sequenzausdruck #
Der Sequenzausdruck hat folgende Form:
{START..END[..INCREMENT]}
- Der Ausdruck beginnt mit einer öffnenden geschweiften Klammer und endet mit einer schließenden geschweiften Klammer.
START
undEND
können entweder positive ganze Zahlen oder einzelne Zeichen sein.- Der
START
und dasEND
Werte sind obligatorisch und werden durch zwei Punkte..
getrennt , ohne Leerzeichen dazwischen. - Das
INCREMENT
Wert ist optional. Falls vorhanden, muss es vomEND
getrennt werden Wert mit zwei Punkten..
, ohne Leerzeichen dazwischen. Wenn Zeichen angegeben werden, wird der Ausdruck in lexikografischer Reihenfolge erweitert. - Der Ausdruck wird zu jeder Zahl oder jedem Zeichen zwischen
START
erweitert undEND
, einschließlich der bereitgestellten Werte. - Ein falsch gebildeter Ausdruck wird unverändert gelassen.
Hier ist der Ausdruck in Aktion:
echo {0..3}
Wenn kein INCREMENT
vorausgesetzt, ist das Standardinkrement 1:
0 1 2 3
Sie können auch andere Zeichen verwenden. Das folgende Beispiel gibt das Alphabet aus:
echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
Wenn der START
value ist größer als END
dann erstellt der Ausdruck einen Bereich, der dekrementiert:
for i in {3..0}
do
echo "Number: $i"
done
Number: 3
Number: 2
Number: 1
Number: 0
Wenn ein INCREMENT
gegeben ist, wird es als Schritt zwischen jedem generierten Element verwendet:
for i in {0..20..5}
do
echo "Number: $i"
done
Jede generierte Zahl ist um 5 größer als die vorhergehende Zahl:
Number: 0
Number: 5
Number: 10
Number: 15
Number: 20
Wenn Sie Ganzzahlen verwenden, um einen Bereich zu generieren, können Sie eine vorangestellte 0
hinzufügen um zu erzwingen, dass jede Zahl dieselbe Länge hat. Um generierte Ganzzahlen mit führenden Nullen aufzufüllen, stellen Sie entweder START
voran und END
mit einer Null:
for i in {00..3}
do
echo "Number: $i"
done
Number: 00
Number: 01
Number: 02
Number: 03
Dem Ausdruck können andere Zeichen vorangestellt oder angehängt werden:
echo A{00..3}B
A00B A01B A02B A03B
Wenn der Ausdruck nicht korrekt aufgebaut ist, wird er unverändert gelassen:
echo {0..}
0..
Schlussfolgerung #
Mit dem Bash-Sequenzausdruck können Sie eine Reihe von Ganzzahlen oder Zeichen generieren.
Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.