Co to są tablice indeksów
Tablice indeksowane to zbiór elementów w bash, do których można uzyskać dostęp za pomocą indeksu lub klucza. Tych tablic można używać do przechowywania i pobierania danych w określonej kolejności, co ułatwia zarządzanie dużymi ilościami danych. Składnia deklarowania indeksowanej tablicy w bash jest następująca:
< nazwa_tablicy > = ( element1 element2 element3 ... )Tutaj nazwa_tablicy to nazwa tablicy, a element1, element2, element3 itd. to wartości, które mają być przechowywane w tablicy. Wartości są oddzielone białymi znakami i pamiętaj, że do utworzenia tablicy możesz także użyć polecenia deklarowania.
Jak używać indeksowanych tablic w Bash
Aby utworzyć tablicę indeksów w bashu, wystarczy zadeklarować zmienną i przypisać jej wartości ujęte w nawiasy i oddzielone spacjami. Oto kilka przykładów pokazujących, jak używać tablic indeksowanych w bashu:
Zmiana kolejności listy w Bash
Jeśli masz listę elementów w określonej kolejności i chcesz zmienić ich kolejność w inny sposób. Możesz użyć tablicy indeksów, aby utworzyć nowe zamówienie na elementy, w następujący sposób:
#!/bin/bash
rzeczy = ( 'Mango' 'Ananas' 'Truskawka' 'Wiśnia' 'Winogrona' )
zamówienie = ( 4 2 0 3 1 )
Do I W ' ${zamówienie[@]} '
Do
Echo ${elementy[$i]}
zrobione
W tym przykładzie tworzymy tablicę o nazwie items z pięcioma elementami. Tworzymy również tablicę indeksów o nazwie order, która określa nową kolejność elementów. Następnie przechodzimy przez tablicę order i używamy każdej wartości jako indeksu, aby pobrać odpowiedni element z tablicy items i wydrukować go.
Filtrowanie listy w Bash
Jeśli masz listę elementów i chcesz odfiltrować określone elementy na podstawie warunku. Możesz użyć tablicy indeksów, aby śledzić indeksy elementów spełniających warunek, w następujący sposób:
#!/bin/bash
rzeczy = ( 'Mango' 'Ananas' 'Truskawka' 'Wiśnia' 'Winogrona' )
indeksy = ( )
Do I W ' ${!przedmioty[@]} '
Do
Jeśli [ [ ${elementy[$i]} == * 'R' * ] ]
Następnie
indeksy+= ( $i )
Być
zrobione
Do I W ' ${indeksy[@]} '
Do
Echo ${elementy[$i]}
zrobione
W tym przykładzie tworzymy tablicę o nazwie items z pięcioma elementami. Tworzymy również pustą tablicę indeksów zwaną indeksami. Następnie przechodzimy przez tablicę items i sprawdzamy, czy każdy element zawiera literę „r”. Jeśli tak, dodajemy jego indeks do tablicy indeksów. Na koniec przechodzimy przez tablicę indeksów i używamy każdej wartości jako indeksu, aby pobrać odpowiedni element z tablicy items i wydrukować go.
Liczenie wystąpień w Bash
Jeśli masz listę elementów i chcesz policzyć liczbę wystąpień każdego elementu, możesz użyć tablicy indeksów do śledzenia liczby, a oto przykład demonstracyjny:
#!/bin/bashrzeczy = ( 'Mango' 'Ananas' 'Truskawka' 'Wiśnia' 'Winogrona' )
liczy = ( )
Do I W ' ${!przedmioty[@]} '
Do
Jeśli [ [ ! ' ${liczba[@]} ' =~ ' ${elementy[$i]} ' ] ]
Następnie
liczy += ( ' ${elementy[$i]} 1' )
w przeciwnym razie
indeks = $ ( Echo ' ${liczba[@]} ' | tr '' '\N' | chwyt -N '^ ${elementy[$i]} ' | z )
liczyć = $ ( Echo ' ${liczy[$indeks-1]} ' | cięcie -D '' -f2 )
liczy [ $indeks - 1 ] = ' ${elementy[$i]} $((liczba+1) )'
Być
zrobione
Do liczyć W ' ${liczba[@]} '
Do
Echo $liczba
zrobione
Najpierw inicjuje tablicę o nazwie „items” z listą ciągów znaków. Następnie deklaruje pustą tablicę o nazwie „counts”. Pętla for jest tworzona w celu iteracji dla każdego elementu w tablicy „items” i dla każdego elementu sprawdza, czy już istnieje w tablicy „counts”.
Jeśli nie istnieje, dodaje element i liczbę 1 do tablicy „counts”. Jeśli istnieje, zwiększa liczbę tego elementu w tablicy „counts”. Na koniec, aby wydrukować każdy element i odpowiadającą mu liczbę, używana jest inna pętla for. Dane wyjściowe tego kodu spowodują wydrukowanie liczby każdego elementu w tablicy „items”, przy czym duplikaty będą liczone oddzielnie.
Aktualizowanie listy w Bash
Jeśli masz listę elementów i chcesz dodać lub usunąć z niej elementy, możesz użyć do tego tablicy indeksów, a oto przykład do demonstracji:
#!/bin/bashrzeczy = ( 'Mango' 'Ananas' 'Truskawka' 'Wiśnia' 'Winogrona' )
# Dodanie nowego elementu do tablicy indeksowanej pod indeksem 2
rzeczy [ 6 ] = 'Pomarańczowy'
# Usuwanie elementu o indeksie 2 z tablicy indeksowanej
nieoprawny rzeczy [ 2 ]
# Drukowanie zaktualizowanej tablicy
Echo ' ${elementy[@]} '
W skrypcie zdefiniowana jest indeksowana tablica „items” z pięcioma początkowymi elementami. Aby dodać nowy element, wartość jest po prostu przypisywana do żądanego indeksu przy użyciu składni tablica[indeks]=wartość. W tym skrypcie „pomarańczowy” jest dodawany do indeksu 6 tablicy. Aby usunąć element, używamy polecenia unset, po którym następuje indeks elementu, który chcemy usunąć. W takim przypadku element o indeksie 2 („Truskawka”) zostaje usunięty. Zaktualizowana tablica jest następnie drukowana przy użyciu składni „${array[@]}”, która rozwija całą tablicę.
Wniosek
Indeksowane tablice to przydatna struktura bash, która pozwala przechowywać i manipulować wieloma wartościami za pomocą jednej zmiennej. Rozumiejąc składnię i użycie indeksowanych tablic, możesz pisać bardziej wydajne i efektywne skrypty bash.