Вступ до Bash Scripting
Alex Scriven
Data Scientist
Два типи масивів у Bash:
In Python: my_list = [1,3,2,4]
In R: my_vector <- c(1,3,2,4)
Створити масив із числовими індексами в Bash можна двома способами.
declare -a my_first_array
my_first_array=(1 2 3)
Пам'ятайте: жодних пробілів навколо знака дорівнює!
У Bash коми не використовують для відокремлення елементів масиву:
Так робити не можна:
my_first_array=(1, 2, 3)
Так — правильно:
my_first_array=(1 2 3)
array[@]. Зверніть увагу: у Bash потрібні фігурні дужки навколо назви масиву під час доступу до цих властивостей.my_array=(1 3 5 2)
echo ${my_array[@]}
1 3 5 2
#array[@]echo ${#my_array[@]}
4
Доступ до елементів масиву через квадратні дужки.
my_first_array=(15 20 300 42)
echo ${my_first_array[2]}
300
Задавайте елементи масиву за індексом.
my_first_array=(15 20 300 42 23 2 4 33 54 67 66)my_first_array[0]=999echo ${my_first_array[0]}
999
$ під час перезапису індексу, наприклад $my_first_array[0]=999 — це не спрацює.Використовуйте array[@]:N:M, щоб «вирізати» підмножину масиву.
N — початковий індекс, а M — скільки елементів повернути.my_first_array=(15 20 300 42 23 2 4 33 54 67 66)
echo ${my_first_array[@]:3:2}
42 23
Додавайте в кінець масиву за допомогою array+=(elements).
Наприклад:
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
Що буде, якщо не поставити дужки навколо того, що додаєте? Перевірмо.
Наприклад:
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
Рядок 10 буде просто дописано до першого елемента. Це не те, що нам потрібно!
bash --versionIn Python:
my_dict = {'city_name': "New York", 'population': 14000000}
In R:
my_list = list(city_name = c('New York'), population = c(14000000))
Асоціативний масив можна створити лише через оголошення declare (з великою літерою -A).
Можна спершу оголосити, а потім додавати елементи, або зробити все в одному рядку.
Створімо асоціативний масив:
declare -A city_details # Спочатку оголошуємоcity_details=([city_name]="New York" [population]=14000000) # Додаємо елементиecho ${city_details[city_name]} # Індекс за ключем, щоб отримати значення
New York
Або створіть асоціативний масив і призначте значення в одному рядку
declare -A city_details=([city_name]="New York" [population]=14000000)
Отримуйте «ключі» асоціативного масиву через !
echo ${!city_details[@]} # Повернути всі ключі
city_name population
Вступ до Bash Scripting