Zajmij się tablicami Bash — jak je deklarować, manipulować nimi i usuwać.
Tablice to magazyny danych używane do przechowywania wartości, które są ze sobą powiązane. W przeciwieństwie do większości języków programowania, tablice Bash mogą przechowywać wartości różnych typów danych w tej samej tablicy.
Bash ma dwa typy tablic: tablice indeksowane i tablice asocjacyjne. W przypadku tablic indeksowanych indeksy zaczynają się od 0 do (n-1), co jest powszechne w większości języków. Jednak tablice w Bash są rzadkie. Oznacza to, że możesz przypisać (n-1)-ty element tablicy bez przypisania (n-2)-tego elementu.
W tym samouczku dowiesz się, jak pracować z tablicami w Bash. Zacznijmy.
Definiowanie tablic
Istnieją trzy sposoby definiowania tablic w Bash. Podobnie jak zmienne Bash, tablice muszą zostać zainicjowane podczas tworzenia. Jedynym wyjątkiem jest sytuacja, gdy używasz ogłosić słowo kluczowe. Musisz także upewnić się, że podczas inicjowania tablicy po żadnej stronie operatora przypisania nie pozostała spacja.
Pierwsza metoda polega na złożonym przypisaniu wartości do nazwy tablicy. Można to zrobić na dwa sposoby:
arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)
W pierwszym przypisaniu złożonym wartości w nawiasach okrągłych są przypisywane sekwencyjnie z indeksu [0] Do [3].
Jednak w drugim przypadku wartości są przypisywane do indeksu w dowolnej kolejności wskazanej przez programistę.
Powiązany: Jakie są zmienne środowiskowe w systemie Linux? Wszystko co musisz wiedzieć
Jeśli zwróciłeś na to szczególną uwagę tablica2, zauważysz ten indeks [2] został pominięty. Tablica zostanie nadal utworzona bez zgłaszania żadnych błędów. To przypisanie jest w rzeczywistości demonstracją rzadkiej pamięci w tablicach Bash, o czym wspomnieliśmy wcześniej.
Zwróć uwagę, że wartości tablicy nie są oddzielane przecinkami. Wartości są po prostu oddzielane spacjami.
Druga metoda pośrednio deklaruje tablicę. Możesz po prostu zacząć przypisywać wartości do pustych elementów tablicy:
arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes
Trzeci sposób polega na jawnym zadeklarowaniu tablicy za pomocą słowa kluczowego ogłosić:
declare -a arrayName
Operacje na tablicach
Aby uzyskać dostęp do elementów tablicy, użyj tej składni: ${tablica[indeks]}
fruits=(mango banana apples)
echo${fruits[1]}# output is banana
Jeśli zamiast tego chcesz wydrukować całą tablicę, użyj metody @ symbol jako
indeks z ${tablica[indeks]}:
echo${fruits[@]}
Aby sprawdzić liczbę elementów tablicy, użyj metody # symbol jak pokazano poniżej:
echo ${#fruits[1]}
Może zaistnieć potrzeba zmodyfikowania elementów tablicy — zobacz poniższy przykład, jak to zrobić. Przypomina to sposób dodawania nowego elementu. Jedyna różnica polega na tym, że zastępujesz wartość indeksem, który już ma wartość.
fruits[1]=pears
Tablice asocjacyjne
Tablicę, której kluczami są dowolne wartości, nazywa się tablicę asocjacyjną. Tablice te służą do przechowywania powiązanych par klucz-wartość.
Powiązany: Jak zamienić skrypty Bash w klikalne aplikacje za pomocą AppleScript
Aby zdefiniować tablicę asocjacyjną, należy to zrobić jawnie, używając słowa kluczowego ogłosić.
# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast
Dostęp do elementu członkowskiego można uzyskać w taki sam sposób, jak do tablic indeksowanych:
echo${animal[lion]}
Jeśli chcesz wydrukować wszystkie wartości, możesz użyć metody @ symbol jak pokazano poniżej:
echo${animal[@]}
Jeśli chcesz wydrukować wszystkie klucze tablicy, możesz użyć metody @ I ! symbole, jak pokazano poniżej:
echo${!animal[@]}
Aby znaleźć liczbę elementów tablicy asocjacyjnej, użyj tej samej składni, której używasz w przypadku tablic indeksowanych (pokazanych w ostatniej sekcji).
Jeśli chcesz usunąć element tablicy lub całą tablicę, użyj poniższej składni:
unset arrayName[Key] # delete array item
unset arrayName # delete entire array
Korzystanie z polecenia printf
Być może zauważyłeś, że w całym artykule zastosowano Echo polecenie wysyłania danych do powłoki. The Echo polecenie działa w tym samouczku, ale ma niewiele funkcji i elastyczności, jeśli chodzi o formatowanie ciągów.
Jednakże drukuj polecenie oferuje bardziej szczegółowe opcje formatowania, dzięki którym tworzenie skryptów Bash jest dziecinnie proste. Uczenie się drukuj funkcja z pewnością poprawi jakość formatowania ciągów znaków i wydajność w Bash.