数组概念
数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。
组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。
用于区分数组的各个元素的数字编号称为下标。元素的下标从0开始。
数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。 这些有序排列的同类数据元素的集合称为数组。
定义数组的方法
Shell中,数组用括号来表示,元素用"空格"符号分隔开。
数组包括的数据类型:
- 数值型
- 字符型 (如果元素值为字符类型,需要加单引号或双引号,防止单个元素中有空格被当成2个元素)
- 混合型数值加字符
方法一:
数组名=(value1 value2 value3 value4 ...)
方法二:先定义列表,再引用列表的值定义数组
列表名="value1 value2 value3 value4 value5"
数组名=($列表名)
方法三:
数组名=([0]=value1 [1]=value2 [2]=value3)
方法四:
数组名[0]=value1
数组名[1]=value2
数组名[2]=value3
数组名[3]=value4
引用数组的值
获取数组的数据列表(所有元素的值)
echo ${array[@]} 或 echo ${array[*]}
查看数组内某一个元素的值
${数组名[n]} //n代表元素的下标
echo ${array[0]} //获取数组内第一个元素的值(下标为0的元素值)
echo ${array[1]} //获取数组内第二个元素的值(下标为1的元素值)
获取数组的长度
echo ${#数组名[*]}
echo ${#数组名[@]}
查看数组内最后一个元素的值
echo ${array[-1]} //获取最后一个元素的值
echo ${array[-2]} //获取倒数第二个元素的值
数组的常用操作
数组分片(数组截取)
${数组名[@]:起始位置:截取长度}
数组元素替换
临时替换(不会影响原有数组)
echo ${数组名[@]/旧字符/新字符}
重新赋值(永久替换)
数组名=(${数组名[@]/旧字符/新字符})
删除数组
删除数组内的某个元素
unset 数组名[n]
删除整个数组
unset 数组名[*] 或 unset 数组名[@]
数组扩写,增加数组内的元素
#方法1 数组名[n]=元素值 //使用下标值直接增加元素
#方法2 数组名+=(元素1 元素2 .....)
#方法3 数组名[数组长度]=元素值 //此种方法必须保证数组元素是完整的,如果某个下标被跳过了,此种方法会替换掉原来的某个元素
#方法4 数组名=("${数组名[@]}" 元素1 元素2 .....) //引用数组值必须加双引号,不然原数组内有空格的
使用for遍历输出数组的每个元素值
通过下标值来遍历,这种方法可能会由于数组内元素不完整,某个下标对应的元素值为空。
查看所有的数组
将数组的值传给函数