使用引用作为键的Bash hashmap

rua*_*hao 6 linux bash dictionary

在Bash中,我想取消设置hashmap的条目.但我失败了.代码如下:

declare -A arr
arr["a'b"]=3
echo ${!arr[@]} ## output: a'b
key="a'b"
unset arr[$key] ## error: -bash: unset: `arr[a'b]': not a valid identifier
Run Code Online (Sandbox Code Playgroud)

我怎样才能取消此条目?

gni*_*urf 5

只需使用单引号:

$ declare -A arr=(["a'b"]=3 [foo]=bar)
$ declare -p arr
declare -A arr='(["a'\''b"]="3" [foo]="bar" )'
$ key="a'b"
$ unset 'arr[$key]'
$ declare -p arr
declare -A arr='([foo]="bar" )'
Run Code Online (Sandbox Code Playgroud)

完成!