数据结构: 数组



1. 数组赋值

# 单个元素赋值
a[0]=zero
a[1]=one
a[2]=two
# 直接通过 数组名[下标] 就可以对其进行引用赋值,如果下标不存在,自动添加新一个数组元素

# 定义整个数组
b=(1 2 3)

一对括号表示是数组,数组元素用”空格”符号分割开。

其他初始化数组的方法

a=(`echo {1..100}`)
b=(`echo {100..1}`)

2. 查看数组的值

# 查看单个元素的值
echo ${a[0]}
zero

# 查看整个数组的值
echo ${b[*]}
1 2 3
echo ${a[@]}
zero one two

3. 查看数组长度

# 查看单个元素的内容长度
echo ${a[0]}
zero
echo ${#a[0]}
4

# 查看整个数组的长度
echo ${b[@]}
1 2 3
echo ${#b[@]}
3

4. 数组的遍历

bak_file=(core javacore headdump)
for i in $\{bak_file[@]\};
do
    echo $i
done

5. 数组的拼接

a=(1 2)
b=(3 4)
c=("${a[@]}" "${b[@]}")

echo ${c[@]}
1 2 3 4

可用于添加新元素,a=("${a[@]}" ""$newitem")

6. 数组的删除

# 删除整个数组
a=(1 2 3 4 5)
unset a
echo ${a[*]}

# 删除数组中的某个元素
a=(1 2 3 4 5)
unset a[1]   
echo ${a[*]} 
1 3 4 5

直接通过:unset 数组[下标] 可以清除相应的元素,不带下标,清除整个数据。

7. 分片和替换

# 分片
a=(1 2 3 4 5)
echo ${a[@]:0:3}
1 2 3

c=(${a[@]:1:4})
echo ${c[*]} 
2 3 4 5
# 直接通过 ${数组名[@或*]:起始位置:长度} 切片原先数组,返回是字符串,中间用"空格"分开,因此如果加上"()",将得到切片数组,上面例子:c 就是一个新数据。

# 替换
a=(1 2 3 4 5)    
echo ${a[@]/3/100}
1 2 100 4 5
echo ${a[@]}
1 2 3 4 5
# 调用方法是:${数组名[@或*]/查找字符/替换字符}