shell基础-04 数组(定义数组、查看数组、访问数组、删除数组、关联数组、二维数组)
文章目录
1. 定义数组
普通数组,只能以整数为索引
1.1 逐个元素定义数组
-
语法
数组名[下标]=变量值
-
示例
定义数组中一个元素
# array1[3]=zhangfei
查看结果
# declare -a |grep array
declare -a array1='([2]="zhangfei")'
说明:不必从0开始定义,会自动按索引排序。
再定义一个
# array1[0]=liubei
查看:
# declare -a |grep array
declare -a array1='([0]="liubei" [2]="zhangfei")'
1.2 定义整个数据
- 从列表定义数组
# array2=(sunquan zhouyu "lu su")
- 从文件定义数组
# array3=(`cat /etc/user_name.txt`)
2. 查看数组
# declare -a
declare -a array2='([0]="sunquan" [1]="zhouyu" [2]="lu su")'
declare -a array3='([0]="caocao" [1]="caopi" [2]="caozhi" )'
3. 访问数组
3.1 访问数组中的第一个元素
-
语法
${数组名[索引]}
-
示例
# echo ${array1[0]}
liubei
3.2 访问多个元素
- 语法:
${数组名[@]:M:N}
说明:
@
表示所有元素
M
表示从索引M开始
N
表示从M开始访问几个元素(而不是到第几个)
- 示例
数组如下
# declare -a |grep array
declare -a array1='([0]="liubei" [1]="guanyu" [3]="zhangfei")'
访问所有数组
# echo ${array1[@]}
liubei guanyu zhangfei
从索引1开始
# echo ${array1[@]:1}
guanyu zhangfei
从索引1开始访问两个元素
# echo ${array1[@]:1:2}
guanyu zhangfei
访问“1号元素”开始的两个元素。即使 2号元素空缺, 张飞 是3号元素 也会被显示出来。
3.3 统计数组元数的个数
-
语法
${#数组名[@]}
获取数组元数的索引:${ !数组名[@]}
-
示例
# echo ${#array1[@]}
3
注意:即使是从索引1开始取数,仍然会显示总数。测试如下:
# echo ${#array1[@]:1}
3
3.4 获取数组元数的索引
-
语法
${ !数组名[@]}
-
获取索引
# echo ${!array1[@]}
0 1 3
- 后边不可以在接其他,否则区不到值(这点和统计数据元素个数不同)
# echo ${#array1[@]:1}
4. 删除数组
- 语法
删除元素:unset 数组名[索引]
删除数组:unset 数组名
- 示例
# unset array1[0]
# echo ${!array1[@]}
1 3
# echo ${array1[@]}
guanyu zhangfei
5. 关联数组
可以用字符做索引
5.1 语法:
- 声明
# declare -A 数组名
敲黑板:关联数组必须先定义
-
赋值
# 数组名[索引]=值
# 数组名=([索引1]="值1" [索引2]="值2" …… )
-
查看
# declare -A
-
访问 同访问普通数组
5.2 示例
- 声明数组
# declare -A array4
定义数组
# array4=(["name"]="zhaoyun" ["sex"]="male" ["age"]="18")
查看
# declare -A|grep array2
declare -A array2='([name]="zhaoyun" [age]="18" [sex]="male" )'
# echo ${array2[name]}
zhaoyun
# echo ${array2[age]}
18
6. 二维数组
脚本只支持一维变量。
- 语法
array3[1][2]=变量值