Shell脚本之数组篇

linux中存在数组的变量类型,如:

  array=("Hi" "my" "name" "is")

  echo ${array[0]}

  Hi

什么是数组?

  linux中的数组是可以存储多个元素的连续内存空间;

  并可以通过key(默认是index)来索引对应内存空间中的值的变量类型。

如何简单创建一个数组?

  ① declare -a ARRAY_NAME

      此为定义一个简单数组,利用index来索引。

  ② declare -A ARRAY_NAME

      此为定义一个关联数组,利用key来索引,属于kv的数组类型。

如何给简单创建的数组赋值呢?

  提前注意:linux的数组支持不连续赋值,可以跳过某个index,如array[0],array[2],array[5]

  ① 逐个赋值:

root@dbt:/home/marvin/shell# declare -a array
root@dbt:/home/marvin/shell# array[0]="hello"
root@dbt:/home/marvin/shell# array[1]="world"
root@dbt:/home/marvin/shell# echo $array
hello
root@dbt:/home/marvin/shell# echo ${array[*]}
hello world

  ② 一次性赋值:

root@dbt:/home/marvin/shell# array=("hello" "world" "!")
root@dbt:/home/marvin/shell# echo ${array[*]}
hello world !

  ③ 指定赋值:

root@dbt:/home/marvin/shell# array=([0]="hello" [1]="hello2")
root@dbt:/home/marvin/shell# echo ${array[*]}
hello hello2

  ④ 使用read赋值:

root@dbt:/home/marvin/shell# read -p "plz input an array: " -a array
plz input an array: 1 2 3 4
root@dbt:/home/marvin/shell# echo ${array[*]}
1 2 3 4

    注意:须空格隔开各元素

  ⑤ 关联数组的使用(用得少):

    declare -A array_name

    array_name=([key1]="val1" [key2]="val2" ...)

如何索引、使用数组元素呢?

  索引:linux中数组的index从0开始索引;如果是kv关联数组,则是array[key]来索引。

  使用:在具体调用时,最好使用如下格式;

      ${array[index]}   /     ${array[key]}

    如果直接调用数组名,则shell默认只会将第一个元素输出,即array[0]

  其他使用方式:

    ① ${array[*]}   和     ${array[@]}   表示调用整个数组

    ② ${#array[*]}  和     ${#array[@]}   都表示数组所有元素的个数

      以上这一点,可以用来向数组末尾追加新元素,如:

        array[${#array[*]}]=NEW_VALUE

    ③ 数组切片:shell中数组的切片不同于python这样的语言,但还算易于理解;

      ${array[@]:offset:number} 

        其中,offset 表示跳过的元素个数。

           number 表示要取多少个元素,如果没有指明,则取出剩余所有。

        如,我们跳过两个元素,取一个元素:

root@dbt:/home/marvin/shell# echo ${array[*]}
1 2 3 4
root@dbt:/home/marvin/shell# echo ${array[*]:2:1}
3

    ④ 删除元素:

      unset array[INDEX] 

   

      

猜你喜欢

转载自www.cnblogs.com/temagenie/p/9442303.html
今日推荐