Команда AWK bash скрипты по-взрослому.
Spisu treści:
- Tablice Bash
- Tworzenie tablic Bash
- Tworzenie tablic indeksowanych numerycznie
- Tworzenie tablic asocjacyjnych
- Operacje tablicowe
- Elementy odniesienia
- Długość tablicy
- Pętla przez tablicę
- Dodaj nowy element
- Usuń element
- Wniosek
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}"
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}
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}"
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 bashTablice szkolne uderzyły w kradzież gotówki Trojan
FBI bada przesadę zgłoszonych włamań do Internetu, które podobno ukradły setki tysięcy dolarów .
Inwestor Carl Icahn rzuca tablicę Yahoo
Aktywny inwestor Carl Icahn ogłosił w piątek, że zrezygnuje z zarządu firmy.
Rozszerzacz Wi-Fi Western Digital ma 3-do-3 tablicę antenową
WD twierdzi, że rozszerzacz zasięgu daje szybszą i szybszą bardziej niezawodny sygnał







