目录
数组名=(元素1 元素2 ...)
数组名=([索引1]=元素1 [索引2]=元素2 [索引n]=元素n...)
数组名=($字符串列表变量)
数组名[索引1]=元素1
数组名[索引2]=元素2
...
数组名[索引n]=元素n
- [root@localhost1 ~]#vim array.sh
- #!/bin/bash
- #法一
- arr1=(1 2 3 4 5 6)
-
- #法二
- arr2=([0]=1 [1]=2 [2]=3 [4]=4)
-
- #法三
- arr3list="a b c d e"
- arre=($arr3list)
-
- #法四
- arr4[0]=a
- arr4[1]=b
- arr4[2]=c
${数组名[索引值]}
- [root@localhost1 ~]#vim array.sh
- #!/bin/bash
- arr1=(10 20 30 40 50 60)
- #读取索引为2的值
- echo ${arr1[2]}
-
- [root@localhost1 ~]#bash array.sh
- 30
${数组名[@]}
${数组名[*]}
- [root@localhost1 ~]#vim array.sh
- #!/bin/bash
- arr1=(10 20 30 40 50 60)
-
- echo ${arr1[@]}
-
- [root@localhost1 ~]#bash array.sh
- 10 20 30 40 50 60
${#数组名[@]}
${#数组名[*]}
- [root@localhost1 ~]#vim array.sh
- #!/bin/bash
- arr1=(10 20 30 40 50 60)
-
- echo ${#arr1[@]}
-
- [root@localhost1 ~]#bash array.sh
- 6
${数组名[@]:索引值:截取元素个数}
${数组名[*]:索引值:截取元素个数}
- [root@localhost1 ~]#vim array.sh
- #!/bin/bash
- arr1=(10 20 30 40 50 60)
-
- echo "索引2处截取4个元素为:${arr1[@]:2:4}"
-
- echo "索引0处截取2个元素为:${arr1[@]:0:2}"
-
- echo "索引5处截取1个元素为:${arr1[*]:5:1}"
-
-
- [root@localhost1 ~]#bash array.sh
- 索引2处截取4个元素为:30 40 50 60
- 索引0处截取2个元素为:10 20
- 索引5处截取1个元素为:60
//针对数组中单个元素
${数组名[索引值]/原始字符/替换字符}
//针对数组中所有元素
${数组名[@]/原始字符/替换字符}
${数组名[*]/原始字符/替换字符}
- [root@localhost1 ~]#vim array.sh
- #!/bin/bash
- arr1=(10 20 30 40 50 60)
-
- echo "替换2为6:${arr1[1]/2/6}"
-
- echo "替换0为1:${arr1[@]/0/1}"
-
- echo "替换10为60:${arr1[@]/10/60}"
-
- [root@localhost1 ~]#bash array.sh
- 替换2为6:60
- 替换0为1:11 21 31 41 51 61
- 替换10为60:60 20 30 40 50 60
unset ${数组名[索引值]}
unset ${数组名[@]}
unset ${数组名[*]}
- [root@localhost1 ~]#array=(1 2 3 4 5 6)
-
- #删除数组索引为2处的元素
- [root@localhost1 ~]#unset array[2]
- [root@localhost1 ~]#echo ${array[@]}
- 1 2 4 5 6
-
- #删除数组
- [root@localhost1 ~]#unset array[@]
- [root@localhost1 ~]#echo ${array[@]}
-
判断数组值是否满元素
length=${#arr1[@]}
echo ${arr1[@]}
echo ${arr1[length-1]}如果有空值,则数组最后一个值不等于元素索引为数组长度-1的元素值
- [root@localhost1 ~]#vim array.sh
- #!/bin/bash
- arr1=([0]=10 [2]=20 [4]=30)
- length=${#arr1[@]}
- echo ${arr1[@]}
- echo ${arr1[length-1]}
-
- [root@localhost1 ~]#bash array.sh
- 10 20 30
- 20
数组名[索引值]=元素
数组名[${#数组名[@]}]=元素
- [root@localhost1 ~]#vim array.sh
- #!/bin/bash
- arr1=(10 20 30 40 50 60)
-
- arr1[6]=70
-
- arr1[${#arr1[@]}]=80
-
- echo ${arr1[@]}
-
- [root@localhost1 ~]#bash array.sh
- 10 20 30 40 50 60 70 80
数组名=("${数组名[@]}" 元素1 元素2 ...)
双引号不能省略,否则,当数组array中存在包含空格的元素时会按空格将元素拆分成多个;不能将@替换为*,如果替换为*,不加双引号时与@的表现一致,加双引号时,会将数组array中的所有元素作为一个元素添加到数组中。
数组名+=(元素1 元素2 ...)
待添加元素必须用"()"包围起来,并且多个元素用空格分隔
- [root@localhost1 ~]#vim array.sh
- #!/bin/bash
- arr1=([0]=10 [2]=20 [4]=30)
-
- arr1=("${arr1[@]}" 40 50)
-
- arr1+=(60 70)
-
- echo ${arr1[@]}
-
- [root@localhost1 ~]#bash array.sh
- 10 20 30 40 50 60 70
如果使用位置变量传参,只会传数组的第一个元素,所以需要在函数内部将所以的参数重新组合成一个新的数组变量。
- //将一个数组当做参数列表传入函数执行,实现数组值翻倍
- [root@localhost1 ~]#vim chuancan.sh
- #!/bin/bash
- test1() {
- arrlist=($@) #关键在这里获取数组传入的参数
- for ((i=0;i<${#arrlist[@]};i++))
- do
- newarr[$i]=$[${arrlist[$i]} * 2]
- done
- echo ${newarr[@]}
- }
- arr=(10 20 30 40 50)
- echo "原始数组为:${arr[@]}"
-
- result=$(test1 ${arr[@]})
- echo "数组值翻倍后为:$result"
-
- [root@localhost1 ~]#bash chuancan.sh
- 原始数组为:10 20 30 40 50
- 数组值翻倍后为:20 40 60 80 100