Unix-Shells (wie Bash, ZSH, SH) haben keine Arrays auf die gleiche Weise wie Sprachen auf höherer Ebene wie Python oder C ++. Sie verarbeiten Arrays weniger strukturiert, typischerweise unter Verwendung von Whitespace-getrennten Saiten oder speziellen Techniken. So können Sie mit Array-ähnlichen Strukturen in verschiedenen Unix-Shell-Kontexten arbeiten:
1. Whitespace-getrennte Saiten:
Dies ist die einfachste Methode. Sie speichern im Wesentlichen Elemente als eine einzelne Zeichenfolge, die durch Leerzeichen (oder andere Abgrenzer, die Sie auswählen) getrennt sind. Der Zugriff auf einzelne Elemente erfordert eine String -Manipulation.
`` `bash
my_array ="Apple Banana Cherry"
Zugriff auf das erste Element (unter der Annahme von Raumtrennung):
First_element ="$ {my_array %% *}" #removes alles vom ersten Raum ab.
Echo "$ First_element" # Ausgabe:Apple
Zugriff auf das zweite Element:
Second_element ="$ {my_array #*}" #Removes alles bis zum ersten Raum.
Second_element ="$ {Second_element %% *}" #Removes alles vom ersten Raum ab
Echo "$ Second_element" # Ausgabe:Banane
#Iterat (weniger effizient):
für Obst in $ my_array; Tun
echo "$ fruit"
Erledigt
`` `
Einschränkungen: Dieser Ansatz ist fehleranfällig, wenn Array-Elemente selbst Räume enthalten.
2. Verwenden von Arrays in Bash (und anderen Schalen mit Array -Unterstützung):
Bash (und einige andere moderne Muscheln) bieten robustere Array -Unterstützung.
`` `bash
deklarieren Sie ein Array
my_array =("Apple" "Banane" "Cherry")
Zugriff auf Elemente:
echo "$ {my_array [0]}" # output:Apple
echo "$ {my_array [1]}" # output:banane
Erhalten Sie die Arraylänge:
echo "$ { # my_array [@]}" # output:3
iteratiert:
denn ich in "$ {! my_array [@]}"; leiten Sie durch Indizes ein
echo "$ {my_array [i]}"
Erledigt
oder direkt durch Elemente iterieren:
für Obst in "$ {my_array [@]}"; Tun
echo "$ fruit"
Erledigt
#Elemente:Elemente:
my_array+=("Datum")
echo "$ {my_array [3]}" #output:Datum
#Anrufen zu Array:
my_array+=(Traubenorange)
#-Reporation Elements (weniger einfach, erfordert eine Verschiebung):
Nicht festgelegt 'my_array [1]' #removes Element am Index 1 (Banane)
#Note, dass Indizes nicht automatisch nach unten verschoben werden. Nach dem Löschen gibt es keine eingebaute Verschiebung.
Drucken Sie das geänderte Array:
für Obst in "$ {my_array [@]}"; Tun
echo "$ fruit"
Erledigt
`` `
Wichtige Überlegungen:
* Zitieren: Zitieren Sie immer Array -Variablen (z. B. `" $ {my_array [@]} "`), um die Aufteilung von Wort aufzuspalten und zu verhindern, was zu unerwartetem Verhalten führen kann. Dies ist besonders wichtig, wenn Array -Elemente Räume oder Sonderzeichen enthalten können.
* Index 0: Arrays in Bash sind 0-idexiert, was bedeutet, dass sich das erste Element am Index 0 befindet.
* Shell-spezifisch: Die für Arrays verfügbare Syntax und Funktionen können je nach von Ihnen verwendeten von Ihnen verwendeten Shell geringfügig variieren (Bash, ZSH, KSH usw.).
3. Verwenden von Befehlszeilen-Tools für Array-ähnliche Operationen:
Für komplexere Array-Manipulationen (Sortieren, Filterung usw.) werden Sie es häufig effizienter finden, externe Befehlszeilen-Dienstprogramme wie "awk`," sed "oder" sort "zu verwenden. Diese Tools zeichnen sich bei der Textverarbeitung aus, die so angepasst werden können, dass sie mit Daten als abgrenzte Zeichenfolgen arbeiten.
Zum Beispiel, um die Elemente einer von Whitespace getrennten Zeichenfolge zu sortieren:
`` `bash
my_array ="Apple Banana Cherry"
echo "$ my_array" | Tr '' '\ n' | sortieren | Tr '\ n' ''
`` `
Zusammenfassend lässt sich sagen, dass Unix-Shells wie in anderen Sprachen keine integrierten, reichen Array-Strukturen haben, aber für viele Aufgaben angemessen ist Bashs Array-Unterstützung. Für komplexe Manipulationen sollten Sie die Kraft von Textverarbeitungsunternehmen nutzen. Denken Sie daran, Ihre Array -Variablen immer korrekt zu zitieren, um mögliche Fehler zu vermeiden.