如何在bash中访问关联数组

Kyl*_*cot 2 bash associative-array

我在关联的bash数组中访问键时遇到问题.

postgresql=(["host"]="foo" ["user"]="bar")

echo "USER: ${postgresql["user"]}" # bar
echo "HOST: ${postgresql["host"]}" # bar
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我找回bar了两把钥匙.我在这里做错了吗?

fed*_*qui 6

使用declare -A来定义它:

$ declare -A postgresql=([host]='foo' [user]='bar')
$ echo "USER: ${postgresql["user"]}"
USER: bar
$ echo "HOST: ${postgresql["host"]}"
HOST: foo
Run Code Online (Sandbox Code Playgroud)

注意关联数组是在Bash 4中引入的,因此如果您不使用至少该版本,它们将无法工作.更多信息在BashGuide - >关联数组中.

我引用了chepner下面非常有用的评论:

关联数组在版本4中引入,因此在Mac OS X的默认bash中不可用.注意没有声明,postgresql 是一个常规数组,并且索引被视为算术表达式,因此字符串"index"被视为一个如果未设置变量,则其值为0的变量.您的代码只是多次设置第0个元素. - chepner 8分钟前