请稍侯

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))})  
}