目录
数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组)
数组元素的下标由 0 开始。
Shell 数组用括号来表示,元素用"空格"符号分割开
在shell语句中,使用、遍历数组的时候,数组格式要写成 ${arr[@]} 或 ${arr[*]}
法一:
数组名=(value1 value2 value3...)
- [root@localhost ~]# num=(1 2 3 4 5 6)
- [root@localhost ~]# echo ${num[@]}
- 1 2 3 4 5 6
法二:
数组名=([0]=value0 [1]=value1......)
- [root@localhost ~]# num1=([0]=1 [1]=2 [2]=3 [3]=4 [4]=5 [5]=6)
- [root@localhost ~]# echo ${num1[@]}
- 1 2 3 4 5 6
法三:
数组名[0]="value"
数组名[1]="value"
数组名[2]="value"
数组名[3]="value"
- [root@localhost ~]# c[0]=1
- [root@localhost ~]# c[1]=2
- [root@localhost ~]# c[2]=3
- [root@localhost ~]# c[3]=4
- [root@localhost ~]# echo ${c[@]}
- 1 2 3 4
数值类型、字符类型、混合类型...
- [root@localhost ~]# cc=(1 2 a ass)
- [root@localhost ~]# echo ${cc[@]}
- 1 2 a ass
echo ${数组名[*]}
echo ${数组名[@]}

echo ${#数组名[*]}
echo ${#数组名[@]}

下标从零开始
数组名=(元素0 元素1 元素2 ……)
echo ${数组名[索引值]} 输出数组索引值对应的元素,索引值为从0开始echo ${数组名[0]}
- [root@localhost ~]# echo ${c[@]}
- 1 2 3 4
- [root@localhost ~]# echo ${c[0]}
- 1
- [root@localhost ~]# echo ${c[2]}
- 3

- [root@localhost ~]# echo ${a[@]}
- 1 2 3 4 65 66 输出数组
- [root@localhost ~]# echo ${a[@]:1:3}
- 2 3 4 输出数组1-3下标的值
- [root@localhost ~]# echo ${a[@]:1:1}
- 2
- [root@localhost ~]# echo ${a[@]:1:8}
- 2 3 4 65 66 输出数组1后面的所有元素
#临时替换
[root@yxp data]#echo ${a[@]/4/7}
#重新赋值,可以永久修改
[root@yxp data]#a=(${a[@]/4/7})
- #临时替换
- [root@localhost ~]# echo ${a[*]}
- 1 2 3 4 5 6 7 8 9
- [root@localhost ~]# echo ${a[*]/4/7}
- 1 2 3 7 5 6 7 8 9
- [root@localhost ~]# a=(1 2 3 4 5 6 74 8 9)
- [root@localhost ~]# echo ${a[*]/4/7}
- 1 2 3 7 5 6 77 8 9 这里的替换是把数组中所有的4都替换掉

unset 数组名
unset 数组名[下标]


法一:直接使用下标进行元素的追加
数组名[下标]=变量

法二:将数组的长度作为下标进行追加元素(其实就是将下标换了一种表达方式)
数组名[${数组名[@]}]=变量名

法三:使用+=进行追加
数组名+=(变量1 变量2 ...)




- //将一个数组当做参数列表传入函数执行,实现数组值翻倍
- [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