Bash Array

Bash-Array

In einem Array können mehrere Werte unter einem Namen stehen. Ich habe ein Skript geschrieben, um Daten aus einer CSV-Datei in ein Array einzulesen. Shell-Skripten mit Ahas Sogar diejenigen, die seit über 20 Jahren mit dem Bash zusammenarbeiten, haben bisher vielleicht sogar ein Bash-Array bestanden. In diesem Beitrag wird gezeigt, wie man in bash die aus Perl und anderen Programmiersprachen bekannten Felder verwendet. Mit Hilfe von Feldern ist es möglich, eine Reihenfolge von geordneten Werte eines gewissen Types zu hinterlegen und zu bearbeit.

Die Bash lässt jedoch nur monodimensionale Anordnungen zu. Es gibt zwei Grundtypen von Anordnungen. Indexierte Felder benutzen die positiven ganzen Zahlen als Indizes. Die Indizes der Integer-Arrays fangen wie in C und vielen anderen Programmiersprachen bei 0 an und wurden erstmals in der Bourne-Shell, der ksh, vorgestellt. Indexierte Felder haben immer das Prädikat -a.

Bei assoziativen Arrays (manchmal auch als Hashes bezeichnet) werden alle nicht leeren Strings als Indizes verwendet. Die assoziativen Arrays sind immer durcheinander, sie verbinden nur die Paare von Indexpunkten. Falls Sie mehrere Messwerte aus dem Array erhalten, können Sie nicht sicher sein, dass sie in der gleichen Abfolge erscheinen, in der sie eingegeben wurden. Zuordnungsarrays haben immer das Merkmal -A.

Sie müssen im Unterschied zu indexierten Feldern immer explizit angegeben werden. Eine indizierte Matrix (Feld, Vector, Sequenz) erlaubt die Bearbeitung mehrerer ähnlicher Objekte, wodurch auf jedes einzelne Objekt über seinen Inhalt einmalig zurückgegriffen werden kann. Häufig werden Felder in Loops benutzt, so dass es nicht notwendig ist, eine Serie von Einzelvariablen zu verwenden.

Folgende Optionen weisen einer Variablen ein Array-Attribut zu, wodurch keine Angabe für das indizierte Array erforderlich ist. Dies geschieht in der Regel stillschweigend durch Zuweisung eines Wertes: ARRAY = () erklärt ein indexiertes Array namens "ARRAY" und setzt es als initial. Das kann auch dazu benutzt werden, ein bestehendes Array zu entleeren. ARRAY [0] = xxx belegt das erste Glied eines indexierten Array (Wertzuweisung).

Falls noch kein Array mit dem Namen "ARRAY" vorhanden ist, wird es erstellt. ý deklarieren Sie -a ARRAY erklärt ein indexiertes Array mit dem Namen "ARRAY". Es wird kein existierendes Array vorinstalliert. Um einer Array-Komponente einen bestimmten Parameter zuzuweisen, gehen Sie wie bei den Shell-Variablen vor. In dieser Hinsicht ist der Bash nicht von C, Perl, Phyton oder anderen Sprachen zu unterscheiden.

In folgendem Beispiel wird der dritten(!) Array-Komponente der Text "zwo" zugewiesen: Was passiert in diesem Falle mit den beiden Bausteinen array[0] und array[1]? In der Bash-Programmierung können Arrays Leerzeichen aufweisen (z.B. in Perl oder anderen Interpretersprachen). Anders als andere Sprachen müssen Sie das Array nicht in der Bash angeben, bevor Sie es verwenden.

Dies ist jedoch sinnvoll, da Sie zum einen festlegen können, dass die in einem Array enthaltenen Daten z.B. als Ganzzahlen gelten sollen (typeset -i array) und zum anderen ein Array mit einer Schreibschutzfunktion zur Verfügung stellen können (typeset -r array). Oftmals wollen Sie ein Array mit einem Wert beim Erstellen einrichten.

Bei der Bash geschieht dies durch eine Klammer: die Werte:

Mehr zum Thema