shell 数组操作

Posted on Posted in bash
Tips: 本文创建于2016年4月7日,已超过 2 年,内容或图片可能已经失效!
文章目录[隐藏]

shell 数组操作

定义一个数组

array_name=(value0 value1 value2 value3)  
array_name=(  
value0  
value1  
value2  
value3  
)  
array_name[0]=value0  
array_name[1]=value1  
array_name[2]=value2  

可以不使用连续的下标,而且下标的范围没有限制。

使用 @* 可以获取数组中的所有元素

${array_name[*]}  
${array_name[@]}  

取得数组元素的个数

length=${#array_name[@]} 
# 或者
length=${#array_name[*]}  

取得数组单个元素的长度

lengthn=${#array_name[n]}

添加元素

array_name=("${array_name[@]}" "value_new")  
echo ${array_name[@]}  
array_name[${#array_name[@]}]="value_new2"

遍历数组

for item in ${array_name[@]}  
do  
echo $item  
done 

销毁

# 销毁整个数组   
unset array_name  
unset array_name[*]  
# 销毁一个元素   
unset name[下标]

扩展-替换
/xx/yy 对每个元素只替换一次
//xx/yy 对每个元素替换多次
//x/ 删除匹配内容

$ echo ${array[@]/e/E} # three第二个e没替换   
onE two thrEe four fivE   
$ echo ${array[@]//e/E} # three第二个e没替换   
onE two thrEE four fivE   
$ echo ${array[@]//e/} # 最大匹配删除   
on two thr four fiv   
$ echo ${array[@]/e/} # 最小匹配删除   
on two thre four fiv 

/#xx/yy front-end匹配(从左向右)
/%xx/yy back-end匹配(从右向左)

$ echo ${array[@]/#o/O} # two的o没替换   
One two three four five   
$ echo ${array[@]/%o/O} # one的o没替换   
one twO three four five

用函数替换

$ newstr() {   
> echo -n "!!!"   
> }   
$ echo ${array[@]/%e/$(newstr)}   
onXX two threXX four fivXX

其他

read命令支持以-a参数从标准输入读入一个数组

$ read -a name   
11 22 33   
$ echo ${name[1]}   
22 
» 转载请注明来源:呢喃 » shell 数组操作

Leave a Reply

Your email address will not be published. Required fields are marked *

4 × 5 =