当我在bash中设置nullglob时:
shopt -s nullglob
然后声明一个关联数组:
declare -A arr=( [x]=y )
我无法取消数组中的特定键:
unset arr[x]
echo ${#arr[@]} # still 1
然而,取消设置
nullglob
可以使得此操作按照我的期望方式工作:shopt -u nullglob
unset arr[x]
echo ${#arr[@]} # now it's 0; x has been removed
这里发生了什么?我不明白shell通配符如何与此相关。我已在bash 4.4.19和5.0.0上进行了测试。
echo unset arr[x]
。 - Cyrus