typora/note/Shell/数组.md

55 lines
1.3 KiB
Markdown
Raw Normal View History

2024-12-11 21:48:55 -05:00
### 数组分类
- 普通数组:只能使用整数作为数组索引
- 关联数组:可以使用字符串作为数组索引
### 普通数组定义
- 一次赋予一个值
```
数组名[索引下标]=值
array[0]=v1
array[1]=v2
array[2]=v3
```
- 一次赋予多个值,元素之间用逗号隔开
```
数组名=(值1 值2 值3 值4)
array=(1 2 3 4)
array2=(`cat /etc/passwd`) # 文件中的每一行赋值给array有空格按照空格切分没有空格按照换行符切分
array3=(`ls /root`)
array4=(harry may jack "Miss You")
array5=(1 2 3 "hello world" [10]=linux)
```
### 数组值的读取
- ${数组名[元素下标]}
```
echo ${array[1]} 获取数组里指定元素
echo ${array[*]} 获取数组里所有元素
echo ${#array[*]} 获取数组元素个数,也就是数组长度
echo ${!array[@]} 获取数组的索引下标
echo ${!array[*]} 获取数组的索引下标
echo ${array[@]:1:2} 获取指定下表的元素1 代表从索引为 1 的元素开始2 代表获取后面的几个元素
echo ${array[*]:1:2} 同上
```
### 关联数组定义
- 先声明定义一个关联数组
```
declare -A asso_array1
```
- 数组单个赋值
```
asso_array1[linux]=one
asso_array1[java]=two
asso_array1[php]=three
```
- 数组一次多个赋值
```
asso_array1=([name1]=linux [name2]=jack [name3]=amy)
```