何为数组
数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。
组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。
用于区分数组的各个元素的数字编号称为下标。元素的下标从0开始。
数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。 这些有序排列的同类数据元素的集合称为数组。
数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。
与大部分编程语言类似,数组元素的下标由 0 开始。
Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:
编辑数组
数组包括的数据类型:
- 数值型
- 字符型 (如果元素值为字符类型,需要加单引号或双引号,防止单个元素中有空格被当成2个元素)
- 混合型数值加字符
类型一
数组名=(value1 value2 value3 value4)
类型二
我们定义一个列表,在用数组引用列表
列表名="value1 value2 value3 value4"
数组名=($列表名)
类型三
用下标值定义每个元素
数组名=([0]=value1 [1]=value2 [2]=value3)
引用数组
1.获取数组的数据列表(所有的值)
echo ${array[@]}
或
echo ${array[*]}
2.查看数组内某一个元素的值
${数组名[n]} ##n代表元素的下标
echo ${array[0]} ##下标从0开始,故获取数组内第一个元素的值
echo ${array[1]} ##获取数组内第二个元素的值,下标为1
数组分片
${数组名[@]:起始位置:截取长度}
${数组名[@]} ##获取整个数组的元素
${数组名[@]:0:3} ##获取从0开始共截取三个元素
${数组名[@]:2:2} ##获取从2开始共截取二个元素
删除数组
1.删除组内某个元素
unset 数组名[n] ##删除组内某个元素
删除一个数组
unset 数组名 [*]
或
unset 数组名 [@]
数组扩增(增加组内元素)
当我们原本定义的数组不能满足我们的需求时,我们需要追加数组内的元素。
数组名[n]=元素值 ##直接使用下标值添加元素
或
数组名+=(元素1 元素2 ....)
或
数组名[数组长度]=元素值 ##此方法必须保证数组是完整的
或
数组名=("${数组名[@]}" 元素1 元素2 ...) ## 引用数组值必须加双引号,不然原数组内有空格的单个元素(例如"zhang san")会被当成2个元素
##且必须使用@,因为加上双引号之后"$@"表示将所有参数当作个体,而$*表示将所有参数当作一个整体。
遍历数组
1.通过数组内所有元素来遍历
通过下标值来遍历
将数组的值传参函数
实验1:获取数组列表传参给函数使用
实验2:令数组内每个元素乘2并列出
实验3:求出数组累加和