zoukankan      html  css  js  c++  java
  • shell中数组讲解

    定义数组

    在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为:

    代码如下:
    数组名=(值1 值2 ... 值n)

    例如:

    代码如下:
    array_name=(value0 value1 value2 value3)

    或者

    代码如下:
    array_name=(
    value0
    value1
    value2
    value3
    )

    还可以单独定义数组的各个分量:

    代码如下:
    array_name[0]=value0
    array_name[1]=value1
    array_name[n]=valuen

    可以不使用连续的下标,而且下标的范围没有限制。

    读取数组

    读取数组元素值的一般格式是:

    代码如下:

    ${数组名[下标]}

    例如:

    代码如下:
    valuen=${array_name[n]}

    使用@或#符号可以获取数组中的所有元素,例如:

    代码如下:
    ${array_name[@]}
    ${array_name[*]}

    获取数组的长度

    获取数组长度的方法与获取字符串长度的方法相同在数组名前加#,例如:

    代码如下:
    # 取得数组元素的个数
    length=${#array_name[@]}
     
    #或者
    length=${#array_name[*]}

    # 取得数组单个元素的长度
    lengthn=${#array_name[n]}

    数组的声明:

    代码如下:
    array[key]=value # array[0]=one,array[1]=two

    declare -a array # array被当作数组名

    array=( value1 value2 value3 ... )

    array=( [1]=one [2]=two [3]=three ... )

    array="one two three" # echo ${array[0|@|*]},把array变量当作数组来处理,但数组元素只有字符串本身

    数组的访问:

    代码如下:
     
    ${array[key]} # ${array[1]}

    数组的删除

    代码如下:
    unset array[1] # 删除数组中第一个元素

    unset array # 删除整个数组

    计算数组的长度:

    代码如下:
    ${#array}
     

    ${#array[0]} #同上。 ${#array[*]} 、${#array[@]}。注意同#{array:0}的区别

    数组的提取

    从尾部开始提取:

    代码如下:
    array=( [0]=one [1]=two [2]=three [3]=four )

    ${array[@]:1} # two three four,除掉第一个元素后所有元素,那么${array[@]:0}表示所有元素

    ${array[@]:0:2} # one two

    ${array[@]:1:2} # two three

    子串删除

    代码如下:
    [root@localhost dev]# echo ${array[@]:0}
    one two three four

    [root@localhost dev]# echo ${array[@]#t*e} # 左边开始最短的匹配:"t*e",这将匹配到"thre"
    one two e four

    [root@localhost dev]# echo ${array[@]##t*e} # 左边开始最长的匹配,这将匹配到"three"

    [root@localhost dev]# array=( [0]=one [1]=two [2]=three [3]=four )

    [root@localhost dev]# echo ${array[@] %o} # 从字符串的结尾开始最短的匹配
    one tw three four

    [root@localhost dev]# echo ${array[@] %%o} # 从字符串的结尾开始最长的匹配
    one tw three four

    子串替换

    代码如下:
    [root@localhost dev]# array=( [0]=one [1]=two [2]=three [3]=four )

    第一个匹配到的,会被删除

    代码如下:
    [root@localhost dev]# echo ${array[@] /o/m}
    mne twm three fmur

    所有匹配到的,都会被删除

    代码如下:
    [root@localhost dev]# echo ${array[@] //o/m}
    mne twm three fmur

    没有指定替换子串,则删除匹配到的子符

    代码如下:
    [root@localhost dev]# echo ${array[@] //o/}
    ne tw three fur

    替换字符串前端子串

    代码如下:
    [root@localhost dev]# echo ${array[@] /#o/k}
    kne two three four

    替换字符串后端子串

    代码如下:
    [root@localhost dev]# echo ${array[@] /%o/k}
    one twk three four
  • 相关阅读:
    How to install VXDIAG Honda, Toyota and JLR SDD software
    16% off MPPS V16 ECU tuning tool for EDC15 EDC16 EDC17
    Cummins INSITE locked and ask for verification code
    How to use BMW Multi Tool 7.3 to replace lost key for BMW X1
    Bleed Brake Master Cylinder with Intelligent Tester IT2
    Porsche Piwis Tester II “No VCI has been detected”,how to do?
    Creader VIII VS. Creader VII+
    How to solve GM MDI cannot complete the installation
    汽车OBD2诊断程序开发 (原文转载,思路很清晰!)
    汽车节温器单片机开发思路
  • 原文地址:https://www.cnblogs.com/Dev0ps/p/8309984.html
Copyright © 2011-2022 走看看