So verwenden Sie Indexarrays in Bash

So verwenden Sie Indexarrays in Bash
Bash unterstützt indizierte Arrays, bei denen es sich im Wesentlichen um Elementlisten handelt, auf die mit ihrer Indexnummer zugegriffen werden kann. Indexierte Arrays sind besonders nützlich, wenn Sie viele verwandte Werte speichern und manipulieren möchten. Lesen Sie diesen Artikel weiter, um zu erfahren, wie Index -Arrays verwendet werden können.

Was sind Indexarrays

Indexierte Arrays sind eine Sammlung von Elementen in Bash, auf die mit einem Index oder einem Schlüssel zugegriffen werden kann. Diese Arrays können verwendet werden, um Daten in einer bestimmten Reihenfolge zu speichern und abzurufen, sodass die Verwaltung großer Datenmengen einfacher wird. Die Syntax für die Erklärung eines indizierten Arrays in Bash lautet wie folgt:

= (Element1 Element2 Element3…)

Hier ist Array_Name der Name des Arrays und Element1, Element2, Element3 usw. die Werte, die im Array gespeichert werden sollen. Die Werte werden durch Whitespace getrennt und beachten.

So verwenden Sie indexierte Arrays in Bash

Um ein Indexarray in Bash zu erstellen, müssen Sie lediglich eine Variable deklarieren und in Klammern eingeschlossen und durch Leerzeichen getrennt werden. Hier sind einige Beispiele, die demonstrieren, wie indizierte Arrays in Bash verwendet werden:

  • Eine Liste neu ordnen
  • Filterung einer Liste
  • Ereignisse zählen
  • Aktualisieren einer Liste

Neuordnung einer Liste in Bash

Wenn Sie eine Liste von Elementen in einer bestimmten Reihenfolge haben und diese auf andere Weise neu ordnen möchten. Sie können ein Indexarray verwenden, um eine neue Bestellung für die Elemente zu erstellen, wie folgt:

#!/Bin/Bash
items = ("Mango" "Ananas" "Erdbeer" "Cherry" "Trauben")
Reihenfolge = (4 2 0 3 1)
für i in "$ order [@]"
Tun
echo $ items [$ i]
Erledigt

In diesem Beispiel erstellen wir ein Array namens Elemente mit fünf Elementen. Wir erstellen auch ein Indexarray namens Order, in dem eine neue Bestellung für die Elemente angegeben ist. Anschließend schauen wir das Bestellarray durch und verwenden jeden Wert als Index, um das entsprechende Element aus dem Element -Array abzurufen und ihn auszudrucken.

Filterung einer Liste in Bash

Wenn Sie eine Liste von Elementen haben und bestimmte Elemente basierend auf einer Bedingung herausfiltern möchten. Sie können ein Indexarray verwenden, um die Indizes der Elemente zu verfolgen, die den Zustand erfüllen, wie folgt:

#!/Bin/Bash
items = ("Mango" "Ananas" "Erdbeer" "Cherry" "Trauben")
Indizes = ()
denn ich in "$ !Artikel[@]"
Tun
if [[$ items [$ i] == * "r" *]]
Dann
Indizes+= ($ i)
fi
Erledigt
für i in "$ Indices [@]"
Tun
echo $ items [$ i]
Erledigt

In diesem Beispiel erstellen wir ein Array namens Elemente mit fünf Elementen. Wir erstellen auch ein leeres Indexarray namens Indizes. Wir schalten dann das Element -Array durch und prüfen, ob jedes Element den Buchstaben „R“ enthält. Wenn dies der Fall ist, fügen wir den Index dem Indizes -Array hinzu. Schließlich schalten wir das Indices -Array durch und verwenden jeden Wert als Index, um das entsprechende Element aus dem Element -Array abzurufen und ihn auszudrucken.

Ereignisse in Bash zählen

Wenn Sie eine Liste von Elementen haben und die Anzahl der Vorkommen jedes Elements zählen möchten, können Sie ein Indexarray verwenden, um die Zählungen zu verfolgen, und hier ist ein Beispiel für die Demonstration:

#!/Bin/Bash
items = ("Mango" "Ananas" "Erdbeer" "Cherry" "Trauben")
zählt = ()
denn ich in "$ !Artikel[@]"
Tun
Wenn [[ ! "$ zählt [@]" = ~ "$ items [$ i]"]]
Dann
zählt+= ("$ items [$ i] 1")
anders
index = $ (echo "$ zählt [@]" | tr "'\ n' | grep -n"^$ items [$ i] "| Cu)
count = $ (echo "$ zählt [$ index -1]" | cut -d "-f2)
zählt [$ index-1] = "$ items [$ i] $ ((count+1))"
fi
Erledigt
Für die Zählung in "$ zählt [@]"
Tun
echo $ count
Erledigt

Es initialisiert zunächst ein Array namens „Elemente“ mit einer Liste von Strings. Dann deklariert es ein leeres Array mit dem Namen "zählt". A für die Schleife wird erstellt, um für jeden Artikel im "Element" -Array zu iterieren, und für jeden Artikel überprüft es, ob es bereits im "Zähl" -Array vorliegt.

Wenn es nicht existiert, fügt es den Artikel und die Anzahl von 1 zu dem Array „Zählungen“ hinzu. Wenn es vorhanden ist, erhöht es die Anzahl dieses Elements im Array „Zählungen“. Zum Ausdrucken jedes Elements und der entsprechenden Zählung eines weiteren für die Schleife wird verwendet. Die Ausgabe dieses Codes druckt die Anzahl jedes Elements im Array „Elemente“ aus, wobei Duplikate getrennt gezählt werden.

Aktualisieren einer Liste in Bash

Wenn Sie eine Liste von Elementen haben und Elemente daraus hinzufügen oder löschen möchten, können Sie ein Indexarray dafür verwenden, und hier ist ein Beispiel für die Demonstration:

#!/Bin/Bash
items = ("Mango" "Ananas" "Erdbeer" "Cherry" "Trauben")
# Hinzufügen eines neuen Elements zum indexierten Array am Index 2 Hinzufügen
Elemente [6] = "Orange"
# Löschen des Elements bei Index 2 aus dem indizierten Array
Unbegründete Artikel [2]
# Drucken des aktualisierten Arrays
echo "$ items [@]"

Im Skript wird ein indiziertes Array „Elemente“ mit fünf ersten Elementen definiert. Um ein neues Element hinzuzufügen, wird der Wert einfach dem gewünschten Index mit dem Syntax -Array [index] = zugeordnet. In diesem Skript wird „Orange“ zu Index 6 des Arrays hinzugefügt. Um ein Element zu löschen, verwenden wir den nicht festgelegten Befehl, gefolgt vom Index des Elements, das wir entfernen möchten. In diesem Fall wird das Element in Index 2 („Strawberry“) gelöscht. Das aktualisierte Array wird dann mit der Syntax "$ Array [@]" gedruckt, die das gesamte Array erweitert.

Abschluss

Die indizierten Arrays sind eine praktische Struktur von Bash, mit der Sie mehrere Werte mit einer einzelnen Variablen speichern und manipulieren können. Durch das Verständnis der Syntax und Verwendung indizierter Arrays können Sie effizientere und effektivere Bash -Skripte schreiben.