W tym artykule wyjaśnimy, w jaki sposób możesz zadeklarować i zainicjować tablice asocjacyjne w Linux Bash. Będziemy dalej rozwinąć siłę tablic asocjacyjnych za pomocą różnych przykładów.
Prowadziliśmy przykłady wspomniane w tym artykule na temat systemu debian 10 Buster. Jednak możesz łatwo powtórzyć na prawie wszystkich dystrybucjach Linux.
Weryfikacja warunków wstępnych
Aby używać tablic asocjacyjnych w Linux Bash, twoja wersja GNU Bash musi być równa lub wyższa niż w wersji 4. Otwórz terminal Linux, uzyskując dostęp do niego za pośrednictwem wyszukiwania uruchamiania aplikacji. Następnie wprowadź następujące polecenie, aby sprawdzić zainstalowaną wersję Bash:
$ bash --version
Moja obecna wersja Bash to 5.0.3 Więc jestem gotowy iść. W przypadku, gdy twoja wersja Bash jest mniejsza niż 4, możesz zaktualizować Bash, uruchamiając następujące polecenie jako sudo:
$ sudo apt-get instaluj-zupełnie podwyższona bash
Deklarowanie tablicy asocjacyjnej i zainicjowanie
Deklarowanie tablicy asocjacyjnej jest dość proste w Bash i można ją wykonać za pomocą polecenia DEKARE:
$ declare -a „arrayName”
W naszym przykładzie będziemy deklarować zmienną tablicy o nazwie samplearray1 w następujący sposób:
$ declare -a Samplearray1
Następnym krokiem jest zainicjowanie wymaganych wartości dla twojej tablicy. W naszym przykładzie chcemy mieć tablicę, w której wartości to kilka nazwisk, a klucze są ich odpowiednimi imionami krajowymi. Tutaj zasilamy wartości tablicy, jeden po drugim w następujący sposób:
$ ArrayName [klucz] = wartość
Przykład:
$ samplearray1 [CHN] = Chiny
$ samplearray1 [jpn] = Japan
$ samplearray1 [Kor] = Korea
$ samplearray1 [twn] = Tajwan
$ samplearray1 [th] = Tajlandia
Szybką alternatywą jest zadeklarowanie i zainicjowanie tablicy w jednym poleceniu Bash w następujący sposób:
$ declare -a arrayName = ([key1] = wartość1 [key2] = wartość2 [key3] = wartość3… . )
Oto, w jaki sposób możemy zadeklarować i zainicjować naszą wspomnianą tablicę, alternatywnie, w następujący sposób:
$ declare -a samplearray1 = ([chn] = China [jpn] = Japan [Kor] = Korea [TWN] = Tajwan
[Th] = Tajlandia)
Teraz przedstawimy kilka przykładów, które opracują, co możesz zrobić z tablicami asocjacyjnymi w Bash:
Przykład 1: Dostęp do klawiszy i wartości tablicy
W tym przykładzie wyjaśnimy, jak możesz:
I,
Wydrukować
Możesz Wydrukuj wartość w stosunku do klucza Za pomocą następującej składni polecenia:
$ echo $ arrayName [keyname]
Oto, w jaki sposób możemy uzyskać dostęp do pełnej nazwy kraju, podając imienia kraju, od naszego samplearray1:
$ echo $ samplearray1 [chn]
$ echo $ samplearray1 [twn]
Jeśli jesteś zainteresowany Drukowanie wszystkich kluczy Z tablicy asocjacyjnej możesz to zrobić za pomocą następującej składni:
$ za klucz w „$ !ArrayName [@] "; do echo $ key; gotowe
Poniższe polecenie wydrukuje wszystkie zwroty na nazwy kraju z mojego samprearray1
Korzystanie z pętli:
$ za klucz w „$ !samplearray1 [@] "; do echo $ key; gotowe
Inną alternatywą dla drukowania wszystkich kluczy z tablicy jest użycie rozszerzenia parametrów. Następujące polecenie wydrukuje wszystkie klucze w tym samym wierszu:
$ echo "$ !samplearray1 [@] "
Jeśli jesteś zainteresowany Drukowanie wszystkich wartości macierzy jednocześnie, Możesz to zrobić, używając pętli dla dla następujących:
$ dla val w „$ arrayName [@]”; do echo $ val; zrobione
Poniższe polecenie wydrukuje wszystkie pełne nazwy krajów przechowywane w moim Samplearray1:
$ dla val w „$ samplearray1 [@]”; do echo $ val; zrobione
Inną alternatywą dla drukowania wszystkich wartości z tablicy jest użycie rozszerzenia parametrów. Następujące polecenie wydrukuje wszystkie wartości w tym samym wierszu:
$ echo "$ samplearray1 [@]"
Kolejny przydatny przykład będzie Wydrukuj wszystkie pary wartości kluczowej od razu, używając pętli dla w następujący sposób:
$ za klucz w „$ !samplearray1 [@] "; do echo" $ klucz jest skrótem dla
$ samplearray1 [$ key] "; gotowe
Możesz oczywiście sprawić, że te informacje są bardziej przydatne w twoich złożonych i znaczących skryptach Bash.
Przykład 2: Liczenie elementów tablicy
Do liczenia i wydrukowania liczby elementów w tablicy asocjacyjnej można użyć następującego polecenia:
$ echo "$ #arrayName [@]"
Wyjście następującego polecenia pokazuje, że mam pięć elementów w moim samplearray1:
$ echo "$ #samplearray1 [@]"
Przykład 3: Dodanie nowych danych w tablicy
Jeśli chcesz dodać element do tablicy po tym, jak już go zadeklarujesz i zainicjujesz, jest to składnia, którą możesz przestrzegać:
$ ArrayName+= ([key] = wartość)
W moim przykładzie chcę dodać inny kraj wraz z jego hrabstwem, więc użyję następującego polecenia:
$ samplearray1+= ([al] = Alabama)
Powtórzenie wartości tablicy sugeruje teraz, że nowy kraj jest dodawany do mojej tablicy:
$ echo "$ samplearray1 [@]"
Przykład 4: Usuwanie elementu z tablicy
Nieprzestrzegając wpisu z tablicy asocjacyjnej, możesz go usunąć jako element tablicy. Jest to możliwe użycie składni Unset, aby to zrobić:
$ Unset ArrayName [klucz]
W moim przykładzie chcę usunąć parę wartości kluczowej „al-Alabama” z mojej tablicy, więc nie uwzględnię klucza „Al” w moim poleceniu:
$ unset samplearray1 [al]
Powtórzenie wartości tablicy sugeruje teraz, że wartość klucza Al-Alabama jest teraz usuwana z mojej tablicy:
$ echo "$ samplearray1 [@]"
Przykład 5: Sprawdź, czy element istnieje w tablicy
Korzystając z stanu IF w następujący sposób, możesz sprawdzić, czy przedmiot jest dostępny w tablicy asocjacyjnej, czy teraz:
$ if [$ arrayName [SearchKey]+_]; Wtedy Echo „istnieje”; Else Echo „niedostępne”; fi
Na przykład, jeśli sprawdzę, czy niedawno usunięty element Al-Alabama istnieje w mojej tablicy, zostanie wydrukowana następująca wiadomość:
$ if [$ samplearray1 [al]+_]; Wtedy Echo „istnieje”; Else Echo „niedostępne”; fi
Jeśli sprawdzę element, który istnieje, następujący wynik zostanie wydrukowany:
$ if [$ samplearray1 [jpn]+_]; Wtedy Echo „istnieje”; Else Echo „niedostępne”; fi
Przykład 6: Usuwanie tablicy
Możesz usunąć tablicę asocjacyjną z pamięci Bash za pomocą polecenia UNSET w następujący sposób:
$ Unset ArrayName
Korzystając z następującego prostego polecenia, usunę mój samplearray1 z pamięci:
$ unset samplearray1
Teraz, kiedy próbuję wydrukować wszystkie wartości tablicy za pośrednictwem następującego polecenia, nie otrzymuję żadnego.
$ echo "$ samplearray1 [@]"
Korzystając z tych przykładów w skryptach Linux Bash, możesz użyć mocy tablic asocjacyjnych, aby osiągnąć rozwiązanie wielu złożonych problemów.