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 | echo ${#array[@]} # 输出元素个数 |
遍历数组
索引数组: 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)。若需复杂数据处理,可结合循环和条件判断实现排序、过滤等。
通过灵活运用数组,可高效管理批量数据(如日志分析、配置项存储)。建议实操练习以巩固语法细节。