请稍侯

Shell 数组

29 May 2013

shell中的数组使用方法:

$ arr=(123 34 3 5)  
$ echo $arr           # 默认获取第一个元素  
123  
$ echo ${arr[1]}      # 通过下标访问  
34  
$ echo ${arr[@]}      # 访问整个数组 ,@或者* 获取整个数组  
123 34 3 5  
$ echo ${#arr[@]}     # 获取数组的长度(最大下标) ,#获取长度 数组中是最后一个下标  
3  
$ echo ${#arr[3]}     # 获取字符串长度  
1  
$ echo ${arr[@]:1:2}  # 切片方式获取一部分数组内容  
34 3  
$ echo ${arr[@]:2}    # 从第二个元素开始  
3 5  
$ echo ${arr[@]::2}   # 到第二个元素  
123 34  
$ arr[0]=1            # 可以直接赋值修改  
$ arr[4]=6            # 不存在自动添加  
$ echo ${arr[@]}  
1 34 3 5 6  

array 的模拟操作:

push:  
array=("${array[@]}" $new_element)  

pop:  
array=(${array[@]:0:$((${#array[@]}-1))})  

shift:  
array=(${array[@]:1})  

unshift:  
array=($new_element "${array[@]}")  

function del_array {  
    local i  
    for (( i = 0 ; i < ${#array[@]} ; i++ ))  
    do  
        if [ "$1" = "${array[$i]}" ] ;then  
            break  
        fi  
    done  
    del_array_index $i  
}  

function del_array_index {  
    array=(${array[@]:0:$1} ${array[@]:$(($1 + 1))})  
}