Tablice w BASH-u

Autor podstrony: Krzysztof Zajączkowski

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

Deklarowanie tablic w BASH-u

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

table=("value 1" 2 Value);

lub w taki sposób:

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:

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

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

table=("value 1" 2 Value); 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:

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

Wynik:

value 1

Liczba elementów tablicy

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

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

lub

table=(1 2 3 4); 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:

numbers=($(seq 1 20)); echo "Liczby: ${numbers[*]}"; three_numbers=${numbers[*]:4:3}; 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:

numbers=$(seq 0 5); echo "${numbers[*]}"; unset numbers[1]; 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:

numbers=$(seq 0 5); unset numbers[*];

Iterowanie po elementach tablicy

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

numbers=$(seq 0 5); for i in "${numbers[*]}"; do echo "$i"; done

Wynik działania powyższego kodu:

0
1
2
3
4
5