shell 遍历数组,将数组元素赋值变量

数组定义

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

参考

https://www.jb51.net/article/142266.htm

https://www.jb51.net/article/69165.htm

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值