1.1.3 数组取值
学习目标
这一节,我们从 基础知识、简单实践、小结 三个方面来学习。
基础知识
简介
对于shell的数组数据来说,获取制定的数组元素主要有两种方法,一种是获取内容,一种是获取其他信息。
语法解读
基于索引找内容
读取数组元素值可以根据元素的下标值来获取,语法格式如下:
${array_name[index]}
${array_name[@]:起始位置:获取数量}
注意:
获取具体的元素内容,指定其下标值,从0开始
获取所有的元素内容,下标位置写"@"或者"*"
获取数组索引
在找内容的时候,有时候不知道数组的索引都有哪些,我们可以基于如下方式来获取,数组的所有索引:
${!array_name[index]}
注意:
获取所有的元素位置,下标位置写"@"或者"*"
获取数组长度的方法与获取字符串长度的方法相同,格式如下:
${#array_name[index]}
注意:
获取具体的元素长度,指定其下标值,从0开始
获取所有的元素个数,下标位置写"@"或者"*"
从系统中获取所有的数组
declare -a
简单实践
实践1-基于索引找内容
设定数组内容
[root@localhost ~]# num_list=(123 234 345 456 567)
获取指定位置元素
[root@localhost ~]# echo ${num_list[0]}
123
[root@localhost ~]# echo ${num_list[1]}
234
获取所有位置元素
[root@localhost ~]# echo ${num_list[*]}
123 234 345 456 567
[root@localhost ~]# echo ${num_list[@]}
123 234 345 456 567
获取末尾位置元素
[root@localhost ~]# echo ${num_list[-1]}
567
[root@localhost ~]# echo ${num_list[-2]}
456
获取指定范围元素
[root@localhost ~]# echo ${num_list[@]:1:1}
234
[root@localhost ~]# echo ${num_list[@]:1:3}
234 345 456
实践2-基于内容获取元素
[root@localhost ~]# echo ${!num_list[@]}
0 1 2 3 4
[root@localhost ~]# echo ${!num_list[@]}
0 1 2 3 4
实践3-获取数组长度
获取数组的元素数量
[root@localhost ~]# echo ${#num_list[@]}
5
[root@localhost ~]# echo ${#num_list[*]}
5
获取数据元素的长度
[root@localhost ~]# echo ${#num_list[3]}
3
实践4-获取系统所有数组
设定数组
[root@localhost ~]# num_list=(123 234 345 456 567)
查看所有数组
[root@localhost ~]# declare -a
declare -a BASH_ARGC='()'
declare -a BASH_ARGV='()'
declare -a BASH_LINENO='()'
declare -a BASH_SOURCE='()'
declare -ar BASH_VERSINFO='([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")'
declare -a DIRSTACK='()'
declare -a FUNCNAME='()'
declare -a GROUPS='()'
declare -a PIPESTATUS='([0]="0")'
declare -a num_list='([0]="123" [1]="234" [2]="345" [3]="456" [4]="567")'