shell数组使用

2020-03-26  本文已影响0人  剑雪封侯之

目前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
上一篇下一篇

猜你喜欢

热点阅读