数组
最后更新于:2022-04-02 03:53:52
[TOC]
## 创建数组
语法
```
ARRAY[INDEX]=value
ARRAY=(value1 value2 ... valueN)
//or
ARRAY=(
value1
value2
value3
)
// 定义数据
mp3s=( *.mp3 )
// 赋值一个数组变量
read -a dice
// 声明数组
declare -A colors
colors["red"]="#ff0000"
colors["green"]="#00ff00"
```
## 读取数组
### 读取单个
```
echo ${array[i]}
```
### 读取所有成员
```
$ foo=(a b c d e f)
$ echo ${foo[@]}
a b c d e f
```
循环
```
for i in "${names[@]}"; do
echo $i
done
```
## 拷贝一个数组
```
hobbies=( "${activities[@]}" )
// 合并一个数组
hobbies=( "${activities[@]" diving )
```
## 数组的长度
```
$ a[100]=foo
$ echo ${#a[*]}
1
$ echo ${#a[@]}
1
```
## 提取数组序号
```
$ arr=([5]=a [9]=b [23]=c)
$ echo ${!arr[@]}
5 9 23
$ echo ${!arr[*]}
5 9 23
```
## 提取数组成员
```
$ food=( apples bananas cucumbers dates eggs fajitas grapes )
$ echo ${food[@]:1:1}
bananas
$ echo ${food[@]:1:3}
bananas cucumbers dates
$ echo ${food[@]:4}
eggs fajitas grapes
```
## 追加数组成员
```
$ foo=(a b c)
$ echo ${foo[@]}
a b c
$ foo+=(d e f)
$ echo ${foo[@]}
a b c d e f
```
## 删除数组
```
$ unset foo[2]
$ echo ${foo[@]}
a b d e f
```
## 关联数组
Bash 的新版本支持关联数组
';