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]=变量值
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄德公笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值