启用未绑定变量检查(set -u
(后,bash无法初始化和访问关联数组:
在初始化期间
set -u
declare -a qwe=()
qwe[asd]=val # bash: asd: unbound variable
访问期间:
declare -a qwe=()
qwe[asd]=val
set -u
echo ${qwe[asd]} # bash: asd: unbound variable
Bash版本:GNU bash, version 5.1.4(1)-release (x86_64-pc-linux-gnu)
我是错过了什么,还是某种虫子?
qwe
是一个数组,具有整数索引。当您编写qwe[asd]
时,Bash知道asd
必须是一个整数,因此它试图获得变量$asd
的值(它将方括号的内容作为"算术上下文"处理(;如果未设置,它将默认为0
,但由于set -u
,您会得到一个错误。
你是说联想数组的declare -A
吗?