Tablice w BASH-u

Stronę tą wyświetlono już: 205 razy

Deklarowanie tablic w BASH-u

Tablice można utworzyć na dwa sposoby, pierwszy z nich wygląda następująco:

Listing 1
  1. table=("value 1" 2 Value);

lub w taki sposób:

Listing 2
  1. table[0]="value 1";

Wyświetlanie zawartości tablicy i odwoływanie się do jej elementów

Wyświetlenie zawartości tablicy wygląda następująco:

Listing 3
  1. table=("value 1" 2 Value);
  2. echo "${table[@]}";

co z kolei można wykonać w następujący sposób:

Listing 4
  1. table=("value 1" 2 Value);
  2. echo "${table[*]}";

Wynik powyższego kodu:

value 1
2
Value

Możliwe jest oczywiście odwołanie się do elementu znajdującego się pod określonym indeksem:

Listing 5
  1. table=("value 1" 2 Value);
  2. echo "$table[0]";

Wynik:

value 1

Liczba elementów tablicy

Liczbę elementów tablicy można pozyskać w następujący sposób:

Listing 6
  1. table=(1 2 3 4);
  2. echo "${#table[@]}";

lub

Listing 7
  1. table=(1 2 3 4);
  2. echo "${#table[*]}";

Wynik działania powyższego skryptu:

4

Wyciąganie z tablicy jej fragmentu

Możliwe jest wyciągnięcie fragmentu tablicy w następujący sposób:

Listing 8
  1. numbers=($(seq 1 20));
  2. echo "Liczby: ${numbers[*]}";
  3. three_numbers=${numbers[*]:4:3};
  4. echo "Wyciągnięte liczby: ${three_numbers[*]}";

Wynik działania powyższego kodu:

Liczby: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Wyciągnięte liczby: 5 6 7

Usuwanie elementów tablicy

Do usuwania elementów tablicy służy polecenie unset, za pomocą którego można usunąć dany element tablicy w następujący sposób:

Listing 9
  1. numbers=$(seq 0 5);
  2. echo "${numbers[*]}";
  3. unset numbers[1];
  4. echo "${numbers[*]}";

Wynik działania:

0 1 2 3 4 5
0 2 3 4 5

Możliwe jest również usunięcie wszystkich elementów tablicy:

Listing 10
  1. numbers=$(seq 0 5);
  2. unset numbers[*];

Iterowanie po elementach tablicy

Po tablicy można iterować w następujący sposób:

Listing 11
  1. numbers=$(seq 0 5);
  2. for i in "${numbers[*]}";
  3. do
  4. echo "$i";
  5. done

Wynik działania powyższego kodu:

0
1
2
3
4
5

Komentarze