关联数组(key value、map数据结构)
在 Bash 4.0 及更高版本中,关联数组(associative arrays)或称为字典(dictionaries)或哈希(hashes)允许你使用字符串作为索引来存储和检索值。关联数组提供了一种在 Shell 脚本中存储键值对的方法。
以下是如何在 Bash 中使用关联数组的基本示例:
bash
#!/bin/bash
# 声明一个关联数组
declare -A assoc_array
# 给关联数组添加键值对
assoc_array["key1"]="value1"
assoc_array["key2"]="value2"
assoc_array["key3"]="value3 with spaces"
# 访问关联数组中的值
echo "The value of key1 is: ${assoc_array["key1"]}"
echo "The value of key3 is: ${assoc_array["key3"]}"
# 遍历关联数组中的所有键值对
for key in "${!assoc_array[@]}"; do
echo "Key: $key, Value: ${assoc_array[$key]}"
done
# 更新关联数组中的值
assoc_array["key1"]="new value1"
# 删除关联数组中的键值对
unset assoc_array["key2"]
# 再次遍历关联数组以验证更改
for key in "${!assoc_array[@]}"; do
echo "Key: $key, Value: ${assoc_array[$key]}"
done在这个示例中:
declare -A assoc_array声明了一个名为assoc_array的关联数组。- 你可以使用
assoc_array["key"]="value"的语法来添加或修改键值对。 - 你可以使用
${assoc_array["key"]}的语法来访问与给定键关联的值。 "${!assoc_array[@]}"会展开为关联数组中所有键的列表,你可以使用它来遍历数组中的所有键值对。unset assoc_array["key"]用于删除与给定键关联的键值对。
关联数组提供了一种在 Bash 脚本中存储和检索复杂数据结构的强大方法,而不仅仅是简单的索引数组。但是,请注意,关联数组在 Bash 4.0 及更高版本中才可用。如果你使用的是较旧的 Bash 版本,你可能需要升级 Bash 或考虑使用其他工具或脚本语言。