[TOC] >[success] # shell -- 数组 ~~~ 1.Shell 中,用括号`( )`来表示数组,数组元素之间用空格来分隔,举个例子array_name=(ele1 ele2 ele3),和 js 类似是弱类型的,它并不要求所有数组元素的类型必须相同 2.Shell 中获取数组中指定元素值'[]' -- '${array_name[index]}' 从0开始为首项举个例子 'nums=(29 100 13 8 91 44)' =》'${nums[2]}' =》13 直接输出打印数据则取弟0项 array_name =》 array_name[0] 3.只给特定元素赋值:'ages=([3]=24 [5]=19 [10]=12)'以上代码就只给第 3、5、10 个元素赋值,所以数组长度是 3 4.获取所有数组元素使用@或*可以获取数组中的所有元素,例如: ${nums[*]} ${nums[@]} ~~~ >[danger] ##### 案例演示 ~~~ #!/bin/bash nums=(29 100 13 8 91 44) echo ${nums[@]} #输出所有数组元素 nums[10]=66 #给第10个元素赋值(此时会增加数组长度) echo ${nums[*]} #输出所有数组元素 echo ${nums[4]} #输出第4个元素 运行结果: 29 100 13 8 91 44 29 100 13 8 91 44 66 91 ~~~ >[danger] ##### 删除数组元素 -- unset ~~~ 1.删除某个元素 'unset array_name[index]',删除的元素位置还会在并不像js 会值前移,具体看下面案例 2.清空整个数组'unset array_name' ~~~ * 例子 ~~~ #!/bin/bash arry=(0 1 2 3 4) echo ${arry[2]} unset arry[2] echo ${arry[*]} echo ${arry[3]} unset arry echo ${arry[*]} 打印结果: 2 0 1 3 4 3 #这里是空行有它表示什么也没输出,因为数组被删除了,所以输出为空 ~~~ >[danger] ##### 获取数组长度 ~~~ 1.数组长度,即为数组元素的个数。利用'@'或'*',可以将数组扩展成列表,然后使用'#'来获取数组元素的个数,和字符串获取长度类似都是通过'#'格式如下: ${#array_name[@]} ${#array_name[*]} 2.如果某个元素是字符串,还可以通过指定下标的方式获得该元素的长度,${#arr[2]} ~~~ * 案例 ~~~ #!/bin/bash nums=(29 100 13) echo ${#nums[*]} #向数组中添加元素 nums[10]=10 echo ${#nums[@]} echo ${#nums[10]} #删除数组元素 unset nums[1] echo ${#nums[*]} 打印结果 3 4 2 3 ~~~ >[danger] ##### 两个数组拼接 ~~~ 1.拼接数组的思路是:先利用@或*,将数组扩展成列表,然后再合并到一起 array_new=(${array1[@]} ${array2[@]}) array_new=(${array1[*]} ${array2[*]}) ~~~ * 案例 ~~~ #!/bin/bash nums=(29 100 13) nums1=(10 20 30) ls=(${nums[*]} ${nums1[*]}) echo ${ls[*]} # 29 100 13 10 20 30 ~~~ >[info] ## 关联数组 ~~~ 1.关联数组使用字符串作为下标,而不是整数,例如'color["white"]="#ffffff"' 取值'echo $(color["white"])' 2.获取关联数组的所有下标值: ${!array_name[@]} ${!array_name[*]} ~~~