文章目录
一:定义数组
1.1 什么是数组
以括号"()"括起来,中间以空格相间隔
数组里,里面的值称为元素,元素的下标(索引)是从零开始
eg:
数值类型: num=(10 20 30 40)
字符类型:name=( “zhang san” “li si” “wang wu”)
1.2 定义数组的方法一
数组名=(value0 value1 value2 …)
注意,如果数组中的元素本省含有空格,需要使用引号括起来
1.3 定义数组的方法二
数组名=( [0]=value [1]=value [2]=value …)
注意:此种定义方法,定义时可以不按照顺序定义,但是,如果没有定义中间某个下标的值,会使得该下标的值为空
1.4 定义数组的方法三
先定义成列表,再将字符串定义成数组
列表名=" value0 value2 value3"
数组名=($列表名)
1.5 定义数组的方法四
通过数组名加下标的方式
数组名[0]=“value”
数组名[1]=“value”
数组名[2]=“value”
二:查看数组
2.1 查看数组的值
2.1.1获取数组所有元素的值:
echo ${数组名[@]}
echo ${数组名[*]}
@与* 的区别
在不加引号时,两者没有区别。但是如果加了引号,“@”会依旧会将数组里每个值都看车独立的。而“*”会将数组里所有的值看成一个整体
2.1.2获取数组指定元素的值
echo ${数组名[下标]}
2.2 查看数组的长度
echo ${#数组名[@]}
或者
echo ${#数组名[*]}
2.3 遍历数组
2.3.1 for 循环遍历数组
2.3.2 while 循环遍历数组
2.4 数组的切片
数组切片和字符串切片类似
echo ${数组名[@] : 起始位置 : 步长}
注:数组切片,其步长是元素
三 ,数组替换与追加元素
3.1.整体替换数组
${数组名[@或者*]/ 查找字符/替换字符}
##注:此种并不会替换原有内容,只是将这么做的结果显示出来,数组内容并没有该表
数组名2=(${数组名1[@或者*]/ 查找字符/替换字符})
##注:如过数组名2 和 数组名 1 一样, 则源数组 数组1 会被改变。如果不同,则会生成一个新的数组
以上的数组替换,如果 查找的字符 在数组里有重复的多个,会将所有的一起替换
3.2 替换数组里某个元素的值
数组名[下标]=“value”
3.3 数组的追加元素
3.3.1 方法一
数组名[下标]=“value”
下标,可以自己指定,也可以先获取数组长度,在将长度数字作为数组的下标
##注正常来说,数组的最后一个元素的下标是数组的长度减一,所有,将数组的长度作为下标,可以实现紧接着最后一个元素进行追加。 但是,如果数组中含有元素值为空的元素,就会出现替换而不是追加
3.3.2 方法二
数组名=("${数组名[@]}" valaue1 value2 … )
##注:
此种方法, “${数组名[@]}” ,必须使用使用双引号,不能省略,也不能使用单引号。 使用双引号,是为了防止原数组的元素因为含有空格而被拆分。 同时,双引号可以不取消特殊字符的含义
同时,也必须使用 @ 符号, 不能 替换为 * 符号 。如果替换成 符号* ,因为外面加了双引号,所以会将所有的元素看成一个整体
3.3.3 方法三
数组名+=(value1 value2)
四 数组的删除
4.1 删除整个数组
unset 数组名
4.2 删除数组里的指定元素
unset 数组名[下标]
##注意:删除数组里元素,只是删除该值,该下标的元素将变为空,后面的元素并不会向前进一