美文网首页
在 Shell 脚本里使用数组

在 Shell 脚本里使用数组

作者: 字母数字或汉字 | 来源:发表于2017-01-06 13:04 被阅读17次

    Shell 原生支持数组,虽然支持的不好。

    创建数组、写入数组元素

    使用 (e1 e2 ..) 语法创建数组:

    arr=(a b c)
    

    从字符串创建数组:

    str="a b c"
    arr=($str)
    

    使用下标语法创建数组或写入数组元素:

    arr[0]=a
    arr[1]=b
    arr[2]=c
    

    如果数组下标使用的不连续,则对跳过的下标赋空值:

    arr[0]=a
    arr[2]=c
    echo ${arr[1]} # <empty>
    

    读取数组、获取数组长度

    arr=(a b c)
    # 获取单个元素
    echo ${arr[0]} # a
    # 获取全部元素
    echo ${arr[@]} # a b c
    # 获取数组长度
    len=${#arr[@]} # 3
    

    通过 for in 语法使用数组:

    arr=(a b c)
    for item in ${arr[@]}; do
        echo "$item" # a, b, c
    done
    

    清除数组、清除数组元素

    arr=(a b c)
    # 清除数组元素
    unset arr[1]
    echo ${#arr[@]} # 2
    echo ${arr[@]} # a c
    echo ${arr[1]} # <empty>
    # 清除数组
    unset arr
    echo ${#arr[@]} # 0
    echo ${arr[@]} # <empty>
    

    分片、替换

    分片:

    arr=(a b c)
    clip=${arr[@]:1:2}
    echo ${#clip[@]} # 1 注意:只切片得到的不是数组
    subarr=(${arr[@]:1:2})
    echo ${#subarr[@]} # 2 
    

    替换:

    arr=(a b c)
    arr=(${arr[@]/b/c}) # a c c
    echo ${arr[@]/c/d} # a d d
    

    相关文章

      网友评论

          本文标题:在 Shell 脚本里使用数组

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