@jesse_b it is rather surprising — it means that one can write declare -A foo; foo[@]=hello; foo[*]=world and test for the presence of those entries. But ${foo[@]} and ${foo[*]} have their usual meanings. To retrieve the values you need another expansion: bar=@; echo ${foo[$bar]}.