shell数组基础

shell数组基础

data-ad-format="fluid" data-ad-layout-key="-7k+ex-4a-9w+4a">

Shell数组基础:学习如何在Shell中存储和操作多个值,掌握数组的基本用法与技巧。

Shell数组是存储多个值的数据结构,支持索引数组(数字下标)和关联数组(字符串键),常用于批量处理数据。

以下是核心知识点及操作示例:

🔢 ​​1. 数组定义与分类​​

  • ​​索引数组​​:下标从0开始,元素用空格分隔。 array=(“apple” “banana” “cherry”) # 直接定义 array[0]=”apple” # 逐个赋值

  • ​​关联数组​​(Bash 4.0+):需先声明,键值对形式。 declare -A assoc_arr # 声明 assoc_arr=([id]=100 [name]=”Tom”) # 初始化

⚙️ ​​2. 数组操作​​

​​访问元素​​

  • 索引数组:${array[0]}

  • 关联数组:${assoc_arr[“name”]}

  • 获取所有元素:${array[@]} 或 ${array[*]}(@推荐避免空格问题)。

​​获取长度​​

1
2
echo ${#array[@]}    # 输出元素个数
echo ${#array[0]} # 输出第一个元素的字符长度

​​遍历数组​​

  • ​​索引数组​​: for i in “${array[@]}”; do echo “$i”; done # 遍历值 for i in “${!array[@]}”; do echo “$i: ${array[$i]}”; done # 遍历下标和值

  • ​​关联数组​​: for key in “${!assoc_arr[@]}”; do echo “$key: ${assoc_arr[$key]}”; done

​​增删改查​​

  • ​​增加元素​​: array+=(“orange”) # 尾部追加 assoc_arr[“age”]=25 # 关联数组新增键

  • ​​删除元素​​: unset array[1] # 删除索引数组第二个元素 unset assoc_arr[“name”] # 删除关联数组键 unset array # 删除整个数组

  • ​​修改元素​​: array[0]=”grape” # 索引数组修改 assoc_arr[“id”]=200 # 关联数组修改

​​切片与替换​​

  • ​​切片​​:${array[@]:1:2} # 从下标1开始截取2个元素

  • ​​临时替换​​:${array[@]/apple/pear} # 替换所有匹配值(不修改原数组)

  • ​​永久替换​​:array=(${array[@]/apple/pear})

🔑 ​​3. 关联数组特有操作​​

  • 声明必须使用 declare -A。

  • 键可以是任意字符串,如: declare -A colors colors[“red”]=”#FF0000”

💡 ​​4. 实用技巧​​

  • ​​数组转函数参数​​: func() { local arr=(“$@”); echo “${arr[@]}”; } func “${array[@]}” # 传递数组

  • ​​命令结果转数组​​: files=($(ls)) # 将ls输出存入数组

  • ​​判断下标是否存在​​: if [[ -v array[3] ]]; then echo “下标3存在”; fi

💎 ​​总结​​

​​操作​​​​索引数组​​​​关联数组​​​​声明​​直接定义declare -A 必需​​访问元素​​${array[0]}${assoc_arr[“key”]}​​遍历​​for i in “${array[@]}”for key in “${!assoc_arr[@]}”​​删除元素​​unset array[1]unset assoc_arr[“key”]

关联数组需Bash 4.0+(查看版本:bash –version)。若需复杂数据处理,可结合循环和条件判断实现排序、过滤等。

通过灵活运用数组,可高效管理批量数据(如日志分析、配置项存储)。建议实操练习以巩固语法细节。

data-ad-format="auto" data-full-width-responsive="true">