美文网首页
shell数组使用

shell数组使用

作者: 剑雪封侯之 | 来源:发表于2020-03-26 01:16 被阅读0次

    目前shell支持一维数据。可使用如下方式进行定义:

    array[0]=22
    array[2]=44
    
    

    shell数组说明:
    1、数据成员不一定必须是相连的,未定义的取值为空
    2、数组下标由0开始

    shell数组赋值

    # 方式1
    array[0]=11
    array[3]=44
    array[5]=77
    
    # 方式2
    array=(one two three four five)
    
    # 方式3
    array=([0]=one [1]=two [4]=five)
    

    shell取值

    # 获取第0个元素的值
    echo ${array[0]}
    
    # 获取第0个元素的长度
    echo ${#array[0]}
    
    # 获取数组中的元素个数
    echo ${#array[*]}
    echo ${#array[@]}
    

    shell元素提取

    格式:${array[*]:start_idx:num},其中,start_idx表示开始的下标,num表示多少个元素

    # 提取所有元素
    echo ${array[*]:0}
    
    # 提取索引3后的所有元素
    echo ${array[*]:3}
    
    # 提取索引3后的2个元素
    echo ${array[*]:3:2}
    

    删除子元素匹配

    #删除最短的模式匹配
    array=(one two three four five two)
    echo ${array[@]#t*e}  # 输出为one two e four five
    
    #删除最长的模式匹配
    echo ${array[@]##t*e} #输出为one two four five two
    
    #删除最短的尾匹配
    echo ${array[@]%i*e} #输出为one two three four f two
    
    #删除最长的尾匹配
    echo ${array[@]%%f*e} #输出为one two three four two
    

    替换子元素

    替换第一个匹配的语法:${array[@]/pattern/dst_value}
    替换所有匹配的语法:${array[@]//pattern/dst_value},如果dst_value为空,表示删除匹配的串
    替换头匹配的语法:${array[@]/#pattern/dst_value}
    替换尾匹配的语法:${array[@]/%pattern/dst_value}

    如:

    array=(one two three five)
    echo ${array[@]/#o/aaa} #输出aaane two three five
    echo ${array[@]/%o/aaa} #输出one twaaa three five
    echo ${array[@]/o/aaa} #输出aaane twaaa three five
    

    相关文章

      网友评论

          本文标题:shell数组使用

          本文链接:https://www.haomeiwen.com/subject/flafuhtx.html