Skip to content

关联数组(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 或考虑使用其他工具或脚本语言。