68 lines
1.4 KiB
Markdown
68 lines
1.4 KiB
Markdown
---
|
|
title: "BASH: arrays and hashmaps"
|
|
category: bash-lifehacks
|
|
filename: bash-arrays-and-hashmaps
|
|
date: 2023-05-07T13:35:26.956Z
|
|
---
|
|
Sometimes there is a need to use in BASH such structures as lists (also known as arrays) and dictionaries (also known as hashmaps and associative arrays). In this post there are some samples how to work with them.
|
|
<!--more-->
|
|
## 1. Arrays
|
|
|
|
Array creation in bash can be done this way:
|
|
|
|
```shell
|
|
sample_array=(foo bar bazz)
|
|
```
|
|
|
|
In order to add single or multiple new elements to the end of array, you should use this syntax:
|
|
|
|
```shell
|
|
sample_array+=(six seven)
|
|
```
|
|
|
|
In order to get elements on the list in a cycle, you should use this syntax:
|
|
|
|
```shell
|
|
for i in ${sample_array[@]}
|
|
do
|
|
echo $i
|
|
done
|
|
```
|
|
|
|
Here is an example how to get element by its index:
|
|
|
|
```shell
|
|
echo ${sample_array[0]}
|
|
echo ${sample_array[3]}
|
|
|
|
# 0, 3 etc. - elements' indexes
|
|
```
|
|
|
|
Array slicing:
|
|
|
|
```shell
|
|
sliced_array=${sample_array[@]:1} # will get all elements of a sample_array, starting with 1st
|
|
another_sliced_array=${sample_array[@]:1:5} # will get sample_array elements since 1st to 5th
|
|
```
|
|
|
|
## 2. Hashmaps
|
|
To create hashmap in bash use this syntax:
|
|
|
|
```shell
|
|
declare -A sample_hashmap=([one]=one [two]=two [three]=three [four]=four [five]=five)
|
|
```
|
|
|
|
This will add new key "foo" with value "bar":
|
|
|
|
```shell
|
|
sample_hashmap[foo]=bar
|
|
```
|
|
|
|
Cycle:
|
|
|
|
```shell
|
|
for key in ${sample_hashmap[@]}
|
|
do
|
|
echo ${sample_hashmap[$key]}
|
|
done
|
|
``` |