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]=变量值

posted on 2021-09-18 14:20  运维开发玄德公  阅读(74)  评论(0编辑  收藏  举报  来源

导航