如何在 bash 中测试变量是关联数组?

时间:2021-03-31 23:07:15

标签: bash

In Bash test if associative array is declared

我想测试一个变量是否声明为关联数组。我看到了上面的讨论。但目前尚不清楚哪个最好。

以上链接中提到的以下内容,但不起作用。

declare -A x; [[ -v x[@] ]]; echo "$?"

这是昂贵的。它必须打印整个数据结构。数据量大时可能会很慢。

[[ "$(declare -p FOO 2>/dev/null)" == "declare -A"* ]]

检查变量是否为关联数组的最佳方法是什么?

编辑:下面的答案最适合 Bash 5。消息顶部链接上的结果已过时,Bash 5 应忽略这些方法。

1 个答案:

答案 0 :(得分:3)

以下可用于测试bash变量是否为关联数组。

[[ ${x@a} = A ]]

${x@a} 可以用来测试它是变量还是数组。

$ declare x; echo "${x@a}"

$ declare -a y; echo "${y@a}"
a
$ declare -A z; echo "${z@a}"
A
相关问题