Wie die meisten Programmiersprachen müssen Bash-Skripte manchmal mit einer Liste verwandter Werte umgehen. Die einfachste Form ist das Standardarray.

In der Bash ist die Array-Programmierung ganz anders, insbesondere was die Syntax betrifft. Bash-Arrays sind ebenfalls streng eindimensional, haben aber dennoch viele Verwendungsmöglichkeiten.

Die grundlegende Syntax von Bash-Arrays

Das Erstellen eines Arrays in Bash ist einfach. Sie können ein ganzes Array mit Klammern initialisieren, zum Beispiel:

city=(London Paris Mailand "New York")

(Sie finden den gesamten Code aus diesem Stadtbeispiel in dieser GitHub-Gist.)

Dadurch wird ein Array mit vier Elementen erstellt, die von 0 bis 3 indiziert sind. Beachten Sie, dass der vierte Wert eine Zeichenfolge in Anführungszeichen ist, die aus zwei Wörtern besteht. Sie müssen Werte mit Leerzeichen in Anführungszeichen setzen, um zu verdeutlichen, dass es sich nicht um separate Werte handelt.

Sie können auf ein einzelnes Element zugreifen, indem Sie die Klammersyntax verwenden, die in allen Programmiersprachen üblich ist:

instagram viewer
Stadt[2]

Da es sich um Bash handelt, benötigen Sie einige Verfeinerungen, um den Wert tatsächlich in einem Ausdruck zu verwenden:

  • Sie müssen das Dollarzeichen voranstellen ($) zum Variablennamen.
  • Sie müssen auch Klammern verwenden ({}), um den Variablennamen eindeutig zu machen. Standardmäßig wird bash behandeln $stadt[2] als Variable benannt Stadt. Fügen Sie Klammern hinzu, um bash anzuweisen, auch die Klammern und die Indexnummer auszuwerten.

Die Standard-Bash-Array-Zugriffssyntax lautet dann:

${Variablenname[Index]}

Hier ist ein vollständiges Beispiel:

#!/bin/bash

city=(London Paris Mailand "New York")
echo ${stadt[3]}

# New York

Anstatt ein Array auf einmal zu initialisieren, können Sie es Schritt für Schritt zuweisen. Dieses Skript ist eine längere Entsprechung des vorherigen Beispiels:

#!/bin/bash

Stadt[0]=London
Stadt[1]=Paris
Stadt[2]=Mailand
city[3]="New York"
echo ${stadt[3]}

# New York

Beachten Sie, dass Sie in beiden Fällen darauf achten müssen, kein Leerzeichen um das Gleichheitszeichen hinzuzufügen. „city[0] = London“ mit Leerzeichen um das Gleichheitszeichen generiert einen Fehler.

Weitere Verwendungsmöglichkeiten für Bash-Arrays

Arrays eignen sich perfekt zum Speichern zusammengehöriger Daten. Hier ist ein (sehr eingeschränktes) Shell-Skript, um die Quadratwurzel einer Zahl zu erhalten:

#!/bin/bash

quadrat[1]=1
quadrat[4]=2
quadrat[9]=3
quadrat[16]=4
quadrat[25]=5

echo ${sqrt[$1]}

Beachten Sie, dass das Skript den Wert verwendet $1 als Array-Index. $1 stellt das erste Befehlszeilenargument dar, das das Skript erhält, sodass Sie dieses Skript folgendermaßen ausführen können:

$ ./sqrt.sh 9
3

Sie kennen vielleicht die $(cmd) Syntax, um einen Befehl auszuführen und seine Ausgabe in einer Variablen zu speichern. Sie können dies mit der Array-Initialisierungssyntax kombinieren, um ein Array von Dateien zu erhalten, mit denen Sie arbeiten können:

arr=( $(ls) )

Ein Array ist oft eine perfekte Datenstruktur zum Iterieren und Bash ist keine Ausnahme. Sie können ein Array durchlaufen, um jedes Element auszugeben oder eine Operation für jedes Mitglied auszuführen.

Sie können ein Array in adressieren a zum.. in Schleife, um über seinen Inhalt zu iterieren. Hier ist zum Beispiel eine einfache Schleife, die die Anzahl der Zeilen in jeder Datei im Array ausgibt Arr:

für Datei in "${arr[@]}"; tun
wc -l "$file"
fertig

# 3 Envvars
# 547 httpd.conf
# ...

Beachten Sie, dass dieses Muster die verwendet @ Symbol, um alle Elemente aus dem Array abzurufen.

Mehr Bash-Array-Syntax

Sie können die Anzahl der Elemente in einem Array folgendermaßen abrufen:

echo ${#city[@]}

# 4

Sie können ein neues Element am Ende eines Standard-Arrays wie folgt hinzufügen:

anr+=(4)

Um der Liste also eine fünfte Stadt hinzuzufügen:

Stadt+=(Rom)
Echo ${Stadt[@]}

# London Paris Mailand New York Rom

Um einen Teil eines Arrays zu extrahieren, können Sie eine Syntax verwenden, die sich der Slice-Operation vieler anderer Sprachen annähert:

${arr[@]:s: n}

Diese Syntax gibt ein Segment des Arrays zurück, beginnend bei Position s und enthält n Produkte. Die kannst du weglassen :n Teil, aus dem alle Elemente extrahiert werden sollen s bis zum Ende der Liste.

echo ${city[@]:2:2}
# Mailand New York

echo ${city[@]:3}
# New York Rom

Bash hat viele Funktionen, sie brauchen nur etwas Lernen

Arrays in Bash können Einschränkungen haben, aber sie bieten die gleiche grundlegende Funktionalität wie die meisten Programmiersprachen. Obwohl bash in der Vergangenheit nur einfache eindimensionale Arrays unterstützt hat, ändern sich die Zeiten. Die neueste Version von bash, 4, unterstützt assoziative Arrays und negative Array-Indizierung.

Unabhängig davon, welche Version von Bash Sie verwenden, ist es wichtig, ihre Nuancen zu verstehen. Selbst die normale Variablensyntax hat viele Eigenheiten.

Bash-Variablen erklärt: Eine einfache Anleitung mit Beispielen

Lesen Sie weiter

TeilenTwitternTeilenEmail

Verwandte Themen

  • Programmierung
  • Linux
  • Programmierung
  • Linux-Bash-Shell
  • Skripterstellung

Über den Autor

Bobby Jack (71 veröffentlichte Artikel)

Bobby ist ein Technologie-Enthusiast, der fast zwei Jahrzehnte lang als Softwareentwickler gearbeitet hat. Bei MUO ist er Junior Editor für den Bereich Programmierung. Er hat eine Leidenschaft für Gaming, arbeitet als Chefredakteur beim Switch Player Magazine und beschäftigt sich mit allen Aspekten des Online-Publishing und der Webentwicklung.

Mehr von Bobby Jack

Abonnieren Sie unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um sich anzumelden