Wprowadzenie do skryptów Bash
Alex Scriven
Data Scientist
Dwa typy tablic w Bash:
W Pythonie: my_list = [1,3,2,4]
W R: my_vector <- c(1,3,2,4)
Tablicę indeksowaną numerycznie można utworzyć na dwa sposoby w Bash.
1. Deklaracja bez dodawania elementów
declare -a my_first_array
2. Tworzenie i dodawanie elementów jednocześnie
my_first_array=(1 2 3)
Pamiętaj — bez spacji wokół znaku równości!
W Bash elementy tablicy nie są oddzielane przecinkami:
To jest niepoprawne:
my_first_array=(1, 2, 3)
To jest poprawne:
my_first_array=(1 2 3)
array[@]. Bash wymaga nawiasów klamrowych wokół nazwy tablicy przy dostępie do jej właściwości.my_array=(1 3 5 2)
echo ${my_array[@]}
1 3 5 2
#array[@]echo ${#my_array[@]}
4
Dostęp do elementów tablicy za pomocą nawiasów kwadratowych.
my_first_array=(15 20 300 42)
echo ${my_first_array[2]}
300
Ustawianie elementów tablicy za pomocą notacji indeksów.
my_first_array=(15 20 300 42 23 2 4 33 54 67 66)my_first_array[0]=999echo ${my_first_array[0]}
999
$ przy nadpisywaniu indeksu, np. $my_first_array[0]=999 — to nie zadziała.Użyj notacji array[@]:N:M, aby wyciąć podzbiór tablicy.
N to indeks początkowy, a M to liczba zwracanych elementów.my_first_array=(15 20 300 42 23 2 4 33 54 67 66)
echo ${my_first_array[@]:3:2}
42 23
Dodawanie elementów do tablicy za pomocą array+=(elements).
Na przykład:
my_array=(300 42 23 2 4 33 54 67 66)my_array+=(10) echo ${my_array[@]}
300 42 23 2 4 33 54 67 66 10
Co się stanie, jeśli nie dodasz nawiasów wokół dołączanej wartości? Sprawdźmy.
Na przykład:
my_array=(300 42 23 2 4 33 54 67 66)
my_array+=10
echo ${my_array[@]}
30010 42 23 2 4 33 54 67 66
Ciąg 10 zostanie po prostu dołączony do pierwszego elementu. Nie o to chodzi!
bash --version w terminaluW Pythonie:
my_dict = {'city_name': "New York", 'population': 14000000}
W R:
my_list = list(city_name = c('New York'), population = c(14000000))
Tablicę asocjacyjną można utworzyć tylko za pomocą składni declare (z wielką literą -A).
Można najpierw zadeklarować tablicę, a potem dodać elementy, lub zrobić to w jednej linii.
Utwórzmy tablicę asocjacyjną:
declare -A city_details # Declare firstcity_details=([city_name]="New York" [population]=14000000) # Add elementsecho ${city_details[city_name]} # Index using key to return a value
New York
Alternatywnie można utworzyć tablicę asocjacyjną i przypisać wartości w jednej linii.
declare -A city_details=([city_name]="New York" [population]=14000000)
Dostęp do kluczy tablicy asocjacyjnej za pomocą !
echo ${!city_details[@]} # Return all the keys
city_name population
Wprowadzenie do skryptów Bash