在 bash 中获取关联数组键值须用 ${array[key]} 语法,需先 declare -a 声明;支持变量展开和默认值扩展,可用 [[ -v array[key] ]] 检查键是否存在。

在 Linux 的 Bash 中,关联数组(associative array)的键值获取需用特定语法,不能像普通数组那样直接用下标索引。
确认数组类型并声明关联数组
关联数组必须显式声明为 declare -A,否则会被当作普通索引数组处理,导致取值失败:
declare -A user_info user_info[name]="Alice" user_info[age]=30 user_info[city]="Beijing"
用 ${array[key]} 获取指定键的值
这是最直接的方式,注意方括号内是键名(字符串),不是数字下标,且不加引号也可,但含空格或特殊字符时建议加双引号:
-
echo ${user_info[name]}→ 输出Alice -
echo ${user_info["age"]}→ 输出30 -
key="city"; echo ${user_info[$key]}→ 输出Beijing(支持变量展开)
安全取值:避免空值或未定义键报错
若键不存在,默认返回空字符串;如需提供默认值,可用参数扩展语法:
-
${user_info[country]:-Unknown}→ 键country不存在时输出Unknown -
${user_info[name]:+Exists}→ 键存在且非空时输出Exists -
${user_info[phone]:?Phone not set}→ 键为空或未定义时打印错误并退出当前命令
检查键是否存在再取值
用 [[ -v array[key] ]] 判断键是否已设置(Bash 4.3+):
if [[ -v user_info[email] ]]; then
echo "Email: ${user_info[email]}"
else
echo "Email not provided"
fi











