--- title: "BASH: массивы и ассоциативные массивы" category: bash-lifehacks filename: bash-arrays-and-hashmaps date: 2023-05-07T13:35:26.956Z --- Иногда возникает необходимость использовать в bash такие структуры данных, как списки (они же массивы) и ассоциативные массивы (он же хэш-таблицы). В данной статье приведены примеры того, как с ними работать. ## 1. Массивы создание массива в bash делается просто: ```bash sample_array=(foo bar bazz) ``` Чтобы добавить один или несколько новых элементов в конец массива, нужно использовать такой синтаксис: ```bash sample_array+=(six seven) ``` Чтобы пройти по массиву циклом, нужно использовать такой синтаксис: ```bash for i in ${sample_array[@]} do echo $i done ``` Чтобы получить элемент по индексу, используется такая конструкция: ```bash echo ${sample_array[0]} echo ${sample_array[3]} # 0, 3 и т. п. - индексы элементов массива ``` Чтобы обрезать массив, используется такая конструкция: ```bash sliced_array=${sample_array[@]:1} # выведет все элементы sample_array, начиная с 1-го another_sliced_array=${sample_array[@]:1:5} # выведет элементы sample_array с 1-го по 5-й ``` ## 2. Ассоциативные массивы создание ассоциативного массива в bash делается так: ```bash declare -A sample_hashmap=([one]=one [two]=two [three]=three [four]=four [five]=five) ``` Добавление новых элементов: ```bash sample_hashmap[foo]=bar ``` Обход в цикле: ```bash for key in ${sample_hashmap[@]} do echo ${sample_hashmap[$key]} done ```