Shell-Array und assoziatives Array
1. Array
1.1. Array-Definition
Ein Klammerpaar stellt ein Array dar und die Array-Elemente werden durch Leerzeichen getrennt
xiaosi@Qunar:~$ a=(1 2 3) xiaosi@Qunar:~$ echo $a 1 xiaosi@Qunar:~$ a=("yoona" "lucy" "tom") xiaosi@Qunar:~$ echo $a yoona
1.2. Array-Länge, Elemente, Zuweisung und Löschung
Länge: Verwenden Sie ${#array name[@ oder *]}, um die Array-Länge zu erhalten
xiaosi@Qunar:~$ echo ${#a[@]} 3 xiaosi@Qunar:~$ echo ${#a[*]} 3
Elemente abrufen: Verwenden Sie ${array name[subscript]}, um die Array-Elemente abzurufen (der Index beginnt bei 0), der Index ist * oder @, um das Ganze abzurufen Array-Inhalt
xiaosi@Qunar:~$ array=("yoona" "lucy" "tom") xiaosi@Qunar:~$ echo ${array[0]} yoona xiaosi@Qunar:~$ echo ${array[1]} lucy xiaosi@Qunar:~$ echo ${array[*]} yoona lucy tom xiaosi@Qunar:~$ echo ${array[@]} yoona lucy tom
Zuweisung: Sie können dem Array-Namen [Index] eine Referenz zuweisen. Wenn der Index nicht vorhanden ist, wird automatisch ein neues Array-Element hinzugefügt
xiaosi@Qunar:~$ array=("yoona" "lucy" "tom") xiaosi@Qunar:~$ echo ${array[2]} tom xiaosi@Qunar:~$ array[2]=lily xiaosi@Qunar:~$ echo ${array[2]} lily
Löschen: Das entsprechende Element kann durch ein nicht gesetztes Array [Index] gelöscht werden, und alle Daten werden ohne Index gelöscht
xiaosi@Qunar:~$ array=("yoona" "lucy" "tom") xiaosi@Qunar:~$ unset array[1] xiaosi@Qunar:~$ echo ${array[*]} yoona tom xiaosi@Qunar:~$ unset array xiaosi@Qunar:~$ echo ${array[*]} xiaosi@Qunar:~$
1.3. Elemente in einem bestimmten Bereich abrufen
Rufen Sie die Elemente im angegebenen Bereich des Arrays direkt über ${Array-Name [@ oder *]: Startposition: Länge} ab und geben Sie eine durch Leerzeichen getrennte Zeichenfolge zurück
xiaosi@Qunar:~$ array=(yoona lucy tom) xiaosi@Qunar:~$ echo ${array[*]} yoona lucy tom xiaosi@Qunar:~$ echo ${array[*]:1:2} lucy tom xiaosi@Qunar:~$ echo ${array[@]:0:1} yoona
1.4. Ersetzen Sie
${Array-Name [@ oder *]/Suchzeichen/Ersatzzeichen}. Durch diesen Vorgang wird der ursprüngliche Array-Inhalt nicht geändert Sie müssen es ändern, Sie können das obige Beispiel sehen
xiaosi@Qunar:~$ array=(yoona lucy tom) xiaosi@Qunar:~$ echo ${array[@]/lucy/lily} yoona lily tom xiaosi@Qunar:~$ echo ${array[@]} yoona lucy tom
2. Assoziatives Array
Bash unterstützt assoziative Arrays, die Zeichenfolgen als Array-Indizes verwenden können. Manchmal ist es einfacher, String-Indizes zu verwenden.
2.1 Assoziatives Array definieren
Zuerst müssen Sie eine Deklarationsanweisung verwenden, um eine Variable als assoziatives Array zu deklarieren.
xiaosi@Qunar:~$ declare -A assArray
Nach der Deklaration gibt es zwei Möglichkeiten, Elemente zu einem assoziativen Array hinzuzufügen.
(1) Verwenden Sie die Methode der eingebetteten Indexwertliste
xiaosi@Qunar:~$ assArray=([lucy]=beijing [yoona]=shanghai) xiaosi@Qunar:~$ echo ${assArray[lucy]} beijing
(2) Verwenden Sie unabhängige Indexwerte für die Zuweisung
xiaosi@Qunar:~$ assArray[lily]=shandong xiaosi@Qunar:~$ assArray[sunny]=xian xiaosi@Qunar:~$ echo ${assArray[sunny]} xian xiaosi@Qunar:~$ echo ${assArray[lily]} shandong
2.2 Array-Indizes auflisten
Jedes Array verfügt über einen Index für die Suche. Verwenden Sie ${!array name[@or*]}, um die Indexliste des Arrays abzurufen
xiaosi@Qunar:~$ echo ${!assArray[*]} lily yoona sunny lucy xiaosi@Qunar:~$ echo ${!assArray[@]} lily yoona sunny lucy
2.3 Alle Schlüssel-Wert-Paare abrufen
#! /bin/bash declare -A cityArray cityArray=([yoona]=beijing [lucy]=shanghai [lily]=shandong) for key in ${!cityArray[*]} do echo "${key} come from ${cityArray[$key]}" done
Ergebnis:
xiaosi@Qunar:~/company/sh$ bash array.sh lily come from shandong yoona come from beijing lucy come from shanghai
Vielen Dank fürs Lesen, ich hoffe, es kann allen helfen, vielen Dank für Ihre Unterstützung dieser Website!
Ausführlichere Erklärungen und Beispielcodes für Shell-Arrays und assoziative Arrays finden Sie auf der chinesischen PHP-Website!