51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Shell小笔记(三)

数组的类型 {#数组的类型}

普通数组 {#普通数组}

  • 索引:通常是从0开始的整数,表示数组中的位置
    • 例如,第一个元素的索引是0,第二个元素的索引是1,依此类推
  • 元素:存储在数组中的实际值,每个索引对应一个元素值
    • 例如, my_array[0] 表示数组中的第一个元素。
  • 普通数组使用可不声明( declare -a [数组名]

|---------------|-------------------------------------------------------------------------------------------------------------| | 1 2 3 | my_array=( "apple" "banana" "cherry" ) # 索引: 0 1 2 # 元素: "apple" "banana" "cherry" |

关联数组 {#关联数组}

  • 索引:在关联数组中,索引是字符串,而不是整数

    • 每个索引表示一个键,它与一个特定的元素值相关联。
    • 与普通数组最大的区别,其由 特定格式的键值对组成
  • 元素:元素是与索引关联的值

    • 关联数组中的每个索引都映射到一个元素值。
  • 使用前必须声明( declare -A [数组名]

|---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 | declare -A fruit_colors fruit_colors[ "apple" ]= "red" fruit_colors[ "banana" ]= "yellow" fruit_colors[ "cherry" ]= "red" # 索引: "apple" "banana" "cherry" # 元素: "red" "yellow" "red" |

数组的定义 {#数组的定义}

直接定义 {#直接定义}

格式为 array_name=(value1 value2 ... valueN)

|-----------|-----------------------| | 1 | array=(a b c) |

索引定义 {#索引定义}

格式为 array_name=( [1]=value1 [2]=value2 ... [N]=valueN )

|-----------|-----------------------------------| | 1 | array=([1]=a [2]=b [3]=c) |

数组的取值 {#数组的取值}

要访问数组中的值,可以使用 ${数组名[索引]}

读取索引 {#读取索引}

这用于获取数组的索引(或键),而不是数组元素本身

echo ${!array[*]} :视为整体

echo ${!array[@]} :视为个体

读取数值 {#读取数值}

返回的是数组中的所有元素,不包括索引

echo ${array[*]} :视为整体

echo ${array[@]} :视为个体

特定元素 {#特定元素}

echo ${array[0]} :访问数组的第一个元素

echo ${array[@]:1} :表示从索引 1 开始,包括索引 1 及之后的所有元素

echo ${array[@]:1:2} :从第二个元素开始,访问连续的两个元素

其他用法 {#其他用法}

echo ${#array[@]} : 获取数组中的元素个数(数组的长度)

echo ${#array[n]} :获取数组 第n个 元素的字符个数

数组的遍历 {#数组的遍历}

通过索引 {#通过索引}

  • 如:循环以索引 i 来迭代数组 array
  • 适合需要根据 元素的索引 处理数组元素的情况

|---------------------|-----------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 | #!/bin/bash names=(Tom Jeny David) for (( i= 0 ;i< ${#names[*]} ;i++ )) do echo ${names[$i]} done |

通过元素 {#通过元素}

  • 如:循环迭代数组 array 中的每个元素,并将每个元素赋值给变量 i
  • 适合需要 依次访问数组元素 的情况

|-------------------------|-----------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 | #!/bin/bash names=(Tom Jeny David) index=0 for i in ${names[@]} do echo "第 ${index} 个元素的值为: ${i} " let index++ done |

数组删切替 {#数组删切替}

删除 {#删除}

使用 unset array[index] 命令,可以删除数组中的特定元素

  • array 是数组名
  • index 是索引

切片 {#切片}

使用 ${array[@]:start:length} 命令,可对数组进行切片

  • start 是起始索引
  • length 是要包括的元素的数量

替换 {#替换}

使用 ${array[@]/old/new} 命令,可对数组的某个特定元素进行全量替换

  • array 是数组名
  • old 是需要替换的元素
  • new 是替换后的元素
赞(0)
未经允许不得转载:工具盒子 » Shell小笔记(三)