Shell数组

作者: 王勇1024 | 来源:发表于2019-06-26 10:36 被阅读0次

    数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。

    与大部分编程语言类似,数组元素的下标由0开始。

    • 定义数组
      Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:
    array_name=(value1 ... valuen)
    

    Shell 是弱类型的,它并不要求所有数组元素的类型必须相同,例如:

    my_array=(1 2 "C" 4)
    

    Shell 数组的长度不是固定的,定义之后还可以增加元素。例如,对于上面的 my_array 数组,它的长度是 4,使用下面的代码会在最后增加一个元素,使其长度扩展到 5:

    my_array[4]="E"
    

    此外,你也无需逐个元素地给数组赋值,下面的代码就是只给特定元素赋值:

    ages=([3]=24 [5]=19 [10]=12)
    

    以上代码就只给第 3、5、10 个元素赋值,所以数组长度是 3。

    我们也可以使用下标来定义数组:

    array_name[0]=value0
    array_name[1]=value1
    array_name[2]=value2
    
    • 访问数组
    ${array_name[index]}
    

    注意:不能写成 $array_name[index]的形式

    示例

    $ arr=(A B C D)
    $ echo ${arr[2]}
    C
    
    • 获取数组中的所有元素
      使用${array_name[@]}${array_name[*]} 可以获取数组中的所有元素,例如:
    $ arr=(A B C D)
    $ echo ${arr[*]}
    A B C D
    $ echo ${arr[@]}
    A B C D
    
    • 获取数组的长度
      可以通过 ${#my_array[@]}${#my_array[*]} 的形式获取数组的长度,例如:
    $ arr=(A B C D)
    $ echo 数组的长度为: ${#arr[@]}
    数组的长度为: 4
    $ echo 数组的长度为: ${#arr[*]}
    数组的长度为: 4
    
    • 字符串转数组
    $ str="A B C D"
    $ arr=(${str})
    $ echo ${arr[*]}
    A B C D
    
    • 数组拷贝
    array2=( "${array[@]}" )
    
    • 数组拼接
      可以使用 (${arr1[@]} ${arr2[@]})(${arr1[*]} ${arr2[*]}) 的方式将多个数组拼接成一个新的数组,示例:
    $ arr1=(A B C D)
    $ arr2=(1 2 3 4)
    $ arr_new=(${arr1[*]} ${arr2[*]})
    $ echo 合并后数组元素:${arr_new[*]}
    合并后数组元素:A B C D 1 2 3 4
    
    • 删除数组元素
      使用 unset 关键字来删除数组元素,具体格式如下:
    unset array_name[index]
    

    其中,array_name 表示数组名,index 表示数组下标。
    如果不写下标,而是写成下面的形式:

    unset array_name
    

    那么就是删除整个数组,所有元素都会消失。示例:

    arr=(A B C D)
    $ unset arr[1]
    $ echo ${arr[*]}
    A C D
    $ unset arr
    $ echo ${arr[*]}
    
    

    相关文章

      网友评论

        本文标题:Shell数组

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