1
0
Fork 0
digitalstudium.com/content/ru/bash-lifehacks/bash-arrays-and-hashmaps.md

67 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "BASH: массивы и ассоциативные массивы"
date: 2023-05-07
---
Иногда возникает необходимость использовать в bash такие структуры данных, как списки (они же массивы) и ассоциативные массивы (он же хэш-таблицы). В данной статье приведены примеры того, как с ними работать.
<!--more-->
## 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
```