Android

Tablice Bash

Команда AWK bash скрипты по-взрослому.

Команда AWK bash скрипты по-взрослому.

Spisu treści:

Anonim

Tablice są jedną z najczęściej używanych i podstawowych struktur danych. Można pomyśleć, że tablica jest zmienną, która może przechowywać w niej wiele zmiennych., omówimy tablice Bash i wyjaśnimy, jak ich używać w skryptach Bash.

Tablice Bash

Bash obsługuje jednowymiarowe tablice indeksowane numerycznie i asocjacyjne. Do tablic numerycznych odwołuje się za pomocą liczb całkowitych, a do asocjacyjnych odwołuje się za pomocą łańcuchów.

Dostęp do tablic indeksowanych numerycznie można uzyskać od końca przy użyciu indeksów ujemnych, indeks -1 odwołuje się do ostatniego elementu. Wskaźniki nie muszą być ciągłe.

W przeciwieństwie do większości języków programowania, elementy tablicy Bash nie muszą być tego samego typu danych. Możesz utworzyć tablicę zawierającą zarówno łańcuchy, jak i liczby.

Bash nie obsługuje tablic wielowymiarowych i nie możesz mieć elementów tablicy, które są również tablicami.

Nie ma ograniczenia maksymalnej liczby elementów, które mogą być przechowywane w tablicy.

Tworzenie tablic Bash

Tablice w Bash można inicjalizować na różne sposoby.

Tworzenie tablic indeksowanych numerycznie

Zmienne Bash są bez typu, każda zmienna może być używana jako tablica indeksowana bez jej deklarowania.

Aby jawnie zadeklarować tablicę, użyj wbudowanej deklaracji:

declare -a array_name

Jednym ze sposobów utworzenia tablicy indeksowanej jest użycie następującej formy:

array_name=value_1 array_name=value_2 array_name=value_n

Gdzie index_* jest dodatnią liczbą całkowitą.

Innym sposobem utworzenia tablicy numerycznej jest określenie listy elementów w nawiasach oddzielonych pustą spacją:

array_name=(element_1 element_2 element_N)

Gdy tablica jest tworzona przy użyciu powyższego formularza, indeksowanie rozpoczyna się od zera, tzn. Pierwszy element ma indeks równy 0 .

Tworzenie tablic asocjacyjnych

W przeciwieństwie do indeksowanych numerycznie tablice asocjacyjne muszą zostać zadeklarowane przed ich użyciem.

Aby zadeklarować tablicę asocjacyjną, użyj wbudowanej declare z opcją -A (wielkie litery):

declare -A array_name

Tablice asocjacyjne można utworzyć za pomocą następującego formularza:

declare -A array_name array_name=value_foo array_name=value_bar array_name=value_xyz

Gdzie index_* może być dowolnym ciągiem.

Możesz także utworzyć tablicę asocjacyjną, korzystając z poniższego formularza:

declare -A array_name array_name=(=value_foo =value_bar =value_xyz)

Operacje tablicowe

Składnia tablic Bash może początkowo wyglądać trochę dziwnie, ale po przeczytaniu tego artykułu będzie to bardziej sensowne.

Elementy odniesienia

Aby odwołać się do jednego elementu, musisz znać indeks elementu.

Do dowolnego elementu można się odwoływać przy użyciu następującej składni:

${array_name} Składnia dostępu do elementu tablicy jest podobna do składni większości języków programowania. Nawiasy klamrowe ${} są wymagane, aby uniknąć operatorów rozwijania nazw plików powłoki.

Wydrukujmy element o indeksie 1 :

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print element echo ${my_array}

Helium

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium

Jedyna różnica między @ a * polega na tym, że formularz ${my_array} jest otoczony podwójnymi cudzysłowami. W tym przypadku * rozwija się do pojedynczego słowa, w którym elementy tablicy są oddzielone spacją. @ rozwija każdy element tablicy do osobnego słowa. Jest to szczególnie ważne w przypadku używania formularza do analfabetyzmu poprzez elementy tablicy.

Aby wydrukować klucze tablicy, dodaj ! operator przed nazwą tablicy:

${!array_name}

Oto przykład:

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${!my_array}"

0 1 2 3

Długość tablicy

Aby uzyskać długość tablicy, użyj następującego formularza:

${#array_name} Składnia jest taka sama, jak w przypadku odwoływania się do wszystkich elementów z dodaniem znaku # przed nazwą tablicy.

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}

4

Pętla przez tablicę

Najczęstszym sposobem iteracji każdego elementu w tablicy jest użycie pętli for:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${my_array}" do echo "$i" done

Powyższy kod będzie iterował tablicę i wypisał każdy element w nowym wierszu:

Hydrogen Helium Lithium Beryllium

Oto przykład, jak wydrukować wszystkie klucze i wartości:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${!my_array}" do echo "$i" "${my_array}" done

0 Hydrogen 1 Helium 2 Lithium 3 Beryllium

Innym sposobem na zapętlenie tablicy jest uzyskanie długości tablicy i użycie pętli w C style :

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") # Length of the array length=${#my_array} # Array Loop for ((i=0; i < ${length}; i++)) do echo $i ${my_array} done

0 Hydrogen 1 Helium 2 Lithium 3 Beryllium

Dodaj nowy element

Aby dodać nowy element do tablicy bash i określić jej indeks, użyj następującej formy:

my_array="New Element"

Oto przykład:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new element my_array="Aluminum" ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium Aluminum

Innym sposobem dodania nowego elementu do tablicy bez określania indeksu jest użycie operatora += . Możesz dodać jeden lub wiele elementów:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new elements my_array+=(Cobalt Nickel) ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium Cobalt Nickel

Usuń element

Aby usunąć pojedynczy element, musisz znać indeks elementów. Element można usunąć za pomocą polecenia unset :

unset my_array

Zobaczmy przykład:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## remove element unset my_array ## print all elements echo "${my_array}"

Hydrogen Helium Beryllium

Wniosek

Wyjaśniliśmy, jak tworzyć tablice indeksowane i asocjacyjne. Pokazaliśmy również, jak iterować po tablicach, obliczać długość tablicy oraz dodawać i usuwać elementy.

terminal bash