1. 数组在Bash中的核心价值
作为Shell脚本的瑞士军刀,Bash数组提供了比普通变量更强大的数据管理能力。在实际运维工作中,我经常用数组处理日志文件列表、批量服务器IP、配置文件参数组等场景。与Python等高级语言不同,Bash数组的语法特性独树一帜,需要特别注意其从0开始的下标规则和灵活的大小动态调整特性。
传统Bash变量只能存储单一值,而数组允许通过索引管理多个元素。比如处理Apache日志时,可以用数组存储不同日志路径:
bash复制log_files=("/var/log/apache/access.log" "/var/log/apache/error.log" "/var/log/apache/ssl.log")
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数组基础操作全解析
2.1 数组声明与初始化
Bash数组有四种声明方式,每种适用于不同场景:
- 直接赋值法(最常用):
bash复制fruits=("apple" "banana" "orange")
- 索引显式声明法(适合非连续索引):
bash复制colors=([0]="red" [2]="green" [5]="blue")
- 逐个元素赋值法(动态构建时有用):
bash复制servers[0]="web01"
servers[1]="db02"
- 从命令输出初始化(处理命令结果时高效):
bash复制process_list=( $(ps -ef | awk '{print $2}') )
注意:元素包含空格时必须加引号,否则会被Bash分词处理
2.2 元素访问与修改
访问数组元素时,花括号语法是必须的:
bash复制echo "第一个水果是:${fruits[0]}" # 正确
echo "第二个水果是:$fruits[1]" # 错误!会被解析为$fruits加上[1]字符
修改元素值直接重新赋值即可:
bash复制fruits[1]="kiwi" # 将banana改为kiwi
特殊索引用法:
${array[@]}:所有元素(保留分词)${array[*]}:所有元素(合并为单字符串)
