06 Jun 2016
# 单个元素赋值 a[0]=zero a[1]=one a[2]=two # 直接通过 数组名[下标] 就可以对其进行引用赋值,如果下标不存在,自动添加新一个数组元素 # 定义整个数组 b=(1 2 3)
一对括号表示是数组,数组元素用”空格”符号分割开。
其他初始化数组的方法
a=(`echo {1..100}`) b=(`echo {100..1}`)
# 查看单个元素的值 echo ${a[0]} zero # 查看整个数组的值 echo ${b[*]} 1 2 3 echo ${a[@]} zero one two
# 查看单个元素的内容长度 echo ${a[0]} zero echo ${#a[0]} 4 # 查看整个数组的长度 echo ${b[@]} 1 2 3 echo ${#b[@]} 3
bak_file=(core javacore headdump) for i in $\{bak_file[@]\}; do echo $i done
a=(1 2) b=(3 4) c=("${a[@]}" "${b[@]}") echo ${c[@]} 1 2 3 4
可用于添加新元素,
a=("${a[@]}" ""$newitem")
# 删除整个数组 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 数组[下标]可以清除相应的元素,不带下标,清除整个数据。
# 分片 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 # 调用方法是:${数组名[@或*]/查找字符/替换字符}