Unix / Linux - Używanie tablic powłoki
W tym rozdziale omówimy, jak używać tablic powłoki w systemie Unix. Zmienna powłoki może przechowywać pojedynczą wartość. Te zmienne nazywane są zmiennymi skalarnymi.
Shell obsługuje inny typ zmiennej o nazwie array variable. Może zawierać wiele wartości w tym samym czasie. Tablice zapewniają metodę grupowania zestawu zmiennych. Zamiast tworzyć nową nazwę dla każdej wymaganej zmiennej, można użyć jednej zmiennej tablicowej, która przechowuje wszystkie inne zmienne.
Wszystkie reguły nazewnictwa omówione dla zmiennych powłoki miałyby zastosowanie podczas nazywania tablic.
Definiowanie wartości tablicowych
Różnicę między zmienną tablicową a zmienną skalarną można wyjaśnić w następujący sposób.
Przypuśćmy, że próbujesz przedstawić nazwiska różnych uczniów jako zbiór zmiennych. Każda z indywidualnych zmiennych jest zmienną skalarną w następujący sposób -
NAME01="Zara"
NAME02="Qadir"
NAME03="Mahnaz"
NAME04="Ayan"
NAME05="Daisy"
Możemy użyć jednej tablicy do przechowywania wszystkich wyżej wymienionych nazw. Poniżej przedstawiono najprostszą metodę tworzenia zmiennej tablicowej. Pomaga to przypisać wartość do jednego z jego indeksów.
array_name[index]=value
Tutaj nazwa_tablicy to nazwa tablicy, indeks to indeks pozycji w tablicy, którą chcesz ustawić, a wartość to wartość, którą chcesz ustawić dla tego elementu.
Na przykład następujące polecenia -
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
Jeśli używasz ksh powłoce, oto składnia inicjalizacji tablicy -
set -A array_name value1 value2 ... valuen
Jeśli używasz bash powłoce, oto składnia inicjalizacji tablicy -
array_name=(value1 ... valuen)
Dostęp do wartości tablicowych
Po ustawieniu dowolnej zmiennej tablicowej uzyskujesz do niej dostęp w następujący sposób -
${array_name[index]}
W tym przypadku nazwa_tablicy to nazwa tablicy, a indeks to indeks wartości, do której można uzyskać dostęp. Poniżej znajduje się przykład, aby zrozumieć koncepcję -
#!/bin/sh
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"
Powyższy przykład wygeneruje następujący wynik -
$./test.sh
First Index: Zara
Second Index: Qadir
Możesz uzyskać dostęp do wszystkich elementów w tablicy na jeden z następujących sposobów -
${array_name[*]}
${array_name[@]}
Tutaj array_name to nazwa tablicy, która Cię interesuje. Poniższy przykład pomoże Ci zrozumieć pojęcie -
#!/bin/sh
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Method: ${NAME[*]}"
echo "Second Method: ${NAME[@]}"
Powyższy przykład wygeneruje następujący wynik -
$./test.sh
First Method: Zara Qadir Mahnaz Ayan Daisy
Second Method: Zara Qadir Mahnaz Ayan Daisy