在关联数组初始化和访问期间取消绑定变量



启用未绑定变量检查(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吗?

最新更新