Bash 4+:检查关联数组中的键值对是否已设置

时间:2016-01-02 12:24:51

标签: bash

我想检查Bash脚本中关联数组中的某个键值对是否已设置。

到目前为止我的代码(仅限示例):

#!/bin/bash

declare -A aa
aa[FIRST[SECOND]]=1

if [ ! -z ${aa[FIRST[SECOND]]+x} ]; then
    echo "Yes, value is ${aa[FIRST[SECOND]]}."
else
    echo "No, the item has not been set yet."
fi

对我而言,这似乎是保存和声音,但在向其他地方的核心社区提交关键脚本之前,我认为提出问题是个好主意。

2 个答案:

答案 0 :(得分:1)

稍微短一些:)

 if [[ ${aa[FIRST[SECOND]]+x} ]]; then ...

即。假设键是一个字符串“FIRST [SECOND]”

答案 1 :(得分:0)

bash 4.3开始,您可以使用-v运算符。

if [ -v aa[FIRST[SECOND]] ]l; then
    echo "Yes, value is ${aa[FIRST[SECOND]]}"
else
    echo "No, the item has not been set yet."
fi