数组定义方法

(30 20 10 60 50 40) 0 1 2 3 4 5

方法一:

数组名= (value0 value1 value2 .. .) ==元素值之间要有空格==

1.数组的表示方法一.PNG==数组的表示方法一==

方法二:

数组名=([0]=value [1]=value [2]=value ...) 2.数组的表示方法二.PNG==数组的表示方法二==

方法三:

列表名="value0 value1 value2 ... " 数组名=($列表名) 3.数组的表示方法三.PNG==数组的表示方法三==

方法四:

数组名[0]="value" 数组名[1]="value" 数组名[2]="value" 4.数组的表示方法四.PNG==数组的表示方法四==

数组包括的数据类型

数值类型 字符类型: 使用"’"或''定义 获取数组长度 arr_ number=(1 2 3 4 5) arr_ length=$ {#arr_ number[] } ${#arr_ number[@] } echo $arr_ length 5.输出数组的长度.PNG==输出数组的长度== 获取数据列表 echo ${arr_ number[] } echo ${arr_ number[@] } 读取某下标赋值 arr_ index2=${arr_ number [2] } echo $arr_ index2 6.查看数组下标的值.PNG==查看数组下标的值==

数组遍历 #! /bin/bash arr number=(1 2 3 4 5) for V in ${arr_ number[@] } do echo $v done 7.数组遍历.PNG==数组遍历==

8.用遍历的方法去检查数组是否少元素.PNG==用遍历的方法去检查数组是否少元素==

数组切片 arr=(1 2 3 4 5) echo ${arr[@] } #输出整个数组 echo ${arr[@] :0:2} #获取${数组名[@或*] :起始位置:长度}的值*

echo ${arr1[ ]:1:3} echo ${arr[@] :2:3} 9.数组的切片.PNG==数组的切片==

数组替换 arr=(1 2 3 4 5) echo ${arr[@]/4/66} #${数组名[@或*]/查找字符/替换字符} echo ${arr[@] } . #并不会替换数组原有内容 arr=(${arr[@]/4/66}) #要实现改变原有数组,可通过重新赋值实现 echo ${arr[@]}

10.数组的替换这里是把30替换成66.PNG==数组的替换这里是把30替换成66==

数组删除 arr=(12345) unset arr . #删除数组 echo ${arr[] } arr=(12345) unset arr[2]

删除第三个元素 echo ${arr[*] }

11.删除数组.PNG==删除数组==

数组追加元素 方法一: array. name [ index]=value 12.添加元素到数组方法一.PNG==添加元素到数组方法一==

方法二: array_ name[$ {#array_ name[@]}]=value 13.数组追加元素方法二.PNG==数组追加元素方法二== 方法三: array_ name=("${array_ name[@]}" value1 . .. valueN) 双引号不能省略,否则,当数组array_ name中存在包含空格的元素时会按空格将元素拆分成多个不能将“@”替换为“ * ” 如果替换为“* ”,不加双引号时与“@”"的表现一致,加双引号时,会将数组array_ name中的所有元素作为一个元素添 加到数组中 for i in "${array_ name[@]}"; do echo $i; done 14.数组追加元素方法三.PNG==数组追加元素方法三==

方法四: array_ name+= (value1... valueN) 待添加元素必须用“()"包围起来,并且多个元素用空格分隔 15.数组追加元素方法四.PNG==数组追加元素方法四==

向函数传数组参数

函数外 函数名${数组名[@] }

使用${数组名[@]} 获取数组的列表,再用这个列表作为参数给函数传递

函数内 使用$@接收参数列表,再用数组名=($@) 在函数内生成一个的数组

如果将数组变量作为函数参数,函数只会取数组变量的第一个值。 test1 () { echo "接收到的参数列表: $@" newarrary=($1) echo "新数组的值为: $ {newarrary[ * ] }" }

array=(3 2 1 4 5) echo " 原始数组的值为: ${array[ * ] }" test1 $array 16 函数内传送数组.PNG==函数内传送数组==

17.函数内传送数组脚本执行结果.PNG==函数内传送数组脚本执行结果== 解决这个问题则需要将数组变量的值分解成单个的值,然后将这些值作为函数参数使用。在函数内部,再将所有的参数重新组合成“个新 的数组变量。

test2 () {

newarrary= ($ (echo $@)) echo "新数组的值为: $ {newarrary[*] }"

}

array=(3 2 1 4 5) echo "原始数组的值为: ${array[*]}" test2 ${array[ * ] } 18.从函数外部传多个值到函数内部.PNG==从函数外部传多个值到函数内部== 19.函数外部传多个值到函数内部脚本执行结果.PNG==函数外部传多个值到函数内部脚本执行结果==

从函数返回数组 test2 () { newarrary=('echo $@") sum=0 for value in $ {newarrary[*]} do sum=$[$sum + $value] done echo $ sum

} 20.从函数返回数组脚本.PNG==从函数返回数组脚本==

21.从函数返回数组脚本执行结果.PNG==从函数返回数组脚本执行结果== test3 () { newarrary=('echo $@`) for ((i=0; i<=$[$# - 1]; i++))

{

​ newarrary[$i]=$[$ {newarrary[$i]} * 2] } echo $ {newarrary[ * ]} } array=(3 2 1 4 5) echo "原始数组的值为: ${array[ * ] }" result1=test2 ${array[ * ] } echo "新数组的和为: $result1"

result2=(test3 ${array[ * ]}) echo "新数组的值为: ${result2[ * ] }"

22.从函数返回数组第三种方式.PNG==从函数返回数组第三种方式== 22.从函数返回数组第三种方式脚本的执行结果.PNG==从函数返回数组第三种方式脚本的执行结果==