如何检查字典(关联数组)是否为空?我只是使用 声明一个declare -A dict
。我想知道它是否刚刚声明但没有任何密钥。
答案1
关联数组的长度(或其中元素的数量)可用作${#array[@]}
,就像普通数组一样。如果该数字为零,则数组为空。
if [ "${#array[@]}" -ne 0 ]; then
echo 'array is not empty'
fi
对于普通的shell变量,可以使用test-v
来测试它是否存在:
if [ -v variable ]; then
echo 'variable exists'
fi
...但这在数组上并不直观。因此,您无法可靠地使用它来确定数组是否存在但为空,或者是否尚未声明。
0
如果数组的键存在,则测试将为 true 。
答案2
对于最新版本的bash
,测试[[ -z ${dict[@]@K} ]]
(或[[ ! ${dict[@]@K} ]]
) 甚至可以与 一起使用set -u
:@K
参数转换器打印 '' 或一系列带引号的键值对。
答案3
[ -z ${!dict[*]} ] && echo "yes" || echo "no" yes
这应该可以检查它是否为空。