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