目前shell支持一维数据。可使用如下方式进行定义:
array[0]=22
array[2]=44
shell数组说明:
1、数据成员不一定必须是相连的,未定义的取值为空
2、数组下标由0开始
shell数组赋值
# 方式1
array[0]=11
array[3]=44
array[5]=77
# 方式2
array=(one two three four five)
# 方式3
array=([0]=one [1]=two [4]=five)
shell取值
# 获取第0个元素的值
echo ${array[0]}
# 获取第0个元素的长度
echo ${#array[0]}
# 获取数组中的元素个数
echo ${#array[*]}
echo ${#array[@]}
shell元素提取
格式:${array[*]:start_idx:num}
,其中,start_idx表示开始的下标,num表示多少个元素
# 提取所有元素
echo ${array[*]:0}
# 提取索引3后的所有元素
echo ${array[*]:3}
# 提取索引3后的2个元素
echo ${array[*]:3:2}
删除子元素匹配
#删除最短的模式匹配
array=(one two three four five two)
echo ${array[@]#t*e} # 输出为one two e four five
#删除最长的模式匹配
echo ${array[@]##t*e} #输出为one two four five two
#删除最短的尾匹配
echo ${array[@]%i*e} #输出为one two three four f two
#删除最长的尾匹配
echo ${array[@]%%f*e} #输出为one two three four two
替换子元素
替换第一个匹配的语法:${array[@]/pattern/dst_value}
替换所有匹配的语法:${array[@]//pattern/dst_value}
,如果dst_value为空,表示删除匹配的串
替换头匹配的语法:${array[@]/#pattern/dst_value}
替换尾匹配的语法:${array[@]/%pattern/dst_value}
如:
array=(one two three five)
echo ${array[@]/#o/aaa} #输出aaane two three five
echo ${array[@]/%o/aaa} #输出one twaaa three five
echo ${array[@]/o/aaa} #输出aaane twaaa three five
网友评论