数组定义
array=('aaa' 18 20 'bbb' 'aba aba')
数组描述
获取数组长度
数组长度的获取方法有下面三种,常用的是前面两种。
length=${#array[@]}
或
length=${#array[*]}
或
length=${#array}
访问数组元素
数组下标是从0开始 的,如果下标是:*
或者@
则得到整个数组内容。
echo ${arr[2]}
var=${array[3]} #将数组元素赋值给变量var
echo $var
为数组元素赋值
在为数组元素赋值时候,通过索引(下标从0
开始)为数组元素赋值,若存在,会替换原来的值。
array=('aaa' 18 20 'bbb' 'aba aba')
array[2]=qaz
追加元素
在数组末尾追加元素通过索引(下标从0
开始)为元素赋值。若不存在,则会添加一个新的元素。
array=('aaa' 18 20 'bbb' 'aba aba')
array[5]=qaz
遍历数组
for elem in ${array[@]}; do
echo $elem
#do something....
done
for i in $(seq 0 ${#array[@]}); do
elem=${array[$i]}
echo $elem
#do something....
done
举例
利用数组进行代码中文本的替换。
#codes dir
FILE_DIR="/repos/codes"
OLD_LINES_ARRY=('RECEIVER_STATE'
'INTRA'
'NOT_ALLOWED'
'EP_TO'
'NOT_PROCESSING_RESOURCES'
'UNKNOWN_LOCAL')
NEW_LINES_ARRY=('CAUSE_WITH_RECEIVER_STATE'
'HAND_TYPE_INTRA'
'HAND_TYPE_NOT_ALLOWED;'
'HAND_TYPE_EP_TO'
'CAUSE_NOT_PROCESSING_RESOURCES'
'CAUSE_NETWORK_UNKNOWN_LOCAL')
for i in $(seq 0 ${#OLD_LINES_ARRY[@]}); do
old_line="${OLD_LINES_ARRY[$i]}"
new_line=${NEW_LINES_ARRY[$i]}
find $FILE_DIR -type f -a -iname "*.cc" | xargs sed -i "s/$old_line/$new_line/g"
done