Home Shell 中使用关联数组(Map)
Post
Cancel

Shell 中使用关联数组(Map)

在 Bash在 4.0 版本及以后支持。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
## 定义关联数组 fruits_value
declare -A fruits_value

## 赋值操作
### 整体批量赋值
fruits_value=([apple]='100 dollars' [orange]='150 dollars')
### 单个赋值
fruits_value["juice"]='123 dollars'


## 列出全部索引,对普通数组也可以
echo ${!fruits_value[*]}  # 或 echo ${!fruits_value[@]} 

## 列出单个信息
echo ${fruits_value[apple]}

## 列出全部内容,对普通数组也可以
echo ${fruits_value[*]}  # 或 echo ${fruits_value[@]} 

echo ${#fruits_value[*]}	 # 关联数组的长度
echo ${#fruits_value[@]}	 # 关联数组的长度


## 遍历
for u in ${!fruits_value[@]}
do
    echo "fruits_value's ${u} is : ${fruits_value[$u]}"
done

## 非空判断(方式之一),需要双引号避免内容中带空格时解析不完全正确
if [ ! "${fruits_value["apple"]}" ]; then
    echo "IS NULL"
else 
    echo "NOT NULL"
fi

if [ ! "${fruits_value["watermelon"]}" ]; then
    echo "IS NULL"
else 
    echo "NOT NULL"
fi

ref:
https://geek-docs.com/shell/shell-examples/shell-array-and-an-associative-array.html
https://www.cnblogs.com/donfaquir/p/9986157.html

This post is licensed under CC BY 4.0 by the author.