数组基本使用
声明
数组元素之间用空格来分隔
array_name=(value1 value2 …)
读取
${array_name[index]}
demo
#!/bin/bash#第一种声明array_name=(1 2 "A")#Shell 是弱类型的,它并不要求所有数组元素的类型必须相同#下标方式声明数组#array_name[0]=value0echo "第一个元素为: ${array_name[0]}"echo "第二个元素为: ${array_name[1]}"echo "第三个元素为: ${array_name[2]}"#执行脚本,输出结果如下所示:#第一个元素为: 1#第二个元素为: 2#第三个元素为: A
注:Bash Shell 只支持一维数组,不支持多维数组。
删除数组元素
使用 unset 关键字来删除数组元素,具体格式如下:
unset array_name[index]
如果不写下标,而是写成下面的形式:
unset array_name
那么就是删除整个数组,所有元素都会消失。
下面我们通过具体的代码来演示:
#!/bin/bash
arr=(23 56 99 "Eden")
unset arr[1]
echo ${arr[@]}
#输出结果:
#23 99 Eden
unset arr
echo ${arr[*]}
#输出结果(该结果为空):
#
获取数组中的所有元素
#!/bin/bash
array_name[0]=1
array_name[1]=2
array_name[2]=3
echo "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"
#输出结果
#数组的元素为: 1 2 3
#数组的元素为: 1 2 3
获取数组的长度
#!/bin/bash
array_name[0]=1
array_name[1]=2
array_name[2]=3
echo "${#array_name[*]}"
echo "${#array_name[@]}"
#输出结果
#3
#3
数组拼接
拼接数组的思路是:先利用@或*,将数组扩展成列表,然后再合并到一起。具体格式如下:
array_name=(${array1[@]} ${array2[@]}) array_name=(${array1[]} ${array2[]})
下面我们通过具体的代码来演示:
#!/bin/bash
array1=(23 56)
array2=(99 "Eden")
array3=(${array1[@]} ${array2[*]})
echo ${array3[@]} #也可以写作 ${array3[*]}
#运行结果:
#23 56 99 Eden
关联数组
定义关联数组
declare -A array_name
给关联数组赋值
方法1
array_name=([index1]=val1 [index]=val2)
方法2
array_name[index1]=val1 array_name[index2]=val2
Demo
#!/bin/bash
declare -A color
color["red"]="#ff0000"
color["green"]="#00ff00"
color["blue"]="#0000ff"
color["white"]="#ffffff"
color["black"]="#000000"
#获取所有元素值
for value in ${color[*]}
do
echo $value
done
echo "****************"
#获取所有元素下标(键)
for key in ${!color[*]}
do
echo $key
done
echo "****************"
#列出所有键值对
for key in ${!color[@]}
do
echo "${key} -> ${color[$key]}"
done
运行结果:
ff0000
0000ff
ffffff
000000
00ff00
red blue white black green
red -> #ff0000 blue -> #0000ff white -> #ffffff black -> #000000 green -> #00ff00
