Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung des Shell-Arrays und des assoziativen Arrays sowie Beispielcode

Ausführliche Erklärung des Shell-Arrays und des assoziativen Arrays sowie Beispielcode

高洛峰
高洛峰Original
2017-02-07 17:34:331063Durchsuche

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!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn