linux bash 字典检查是否为空

linux bash 字典检查是否为空

如何检查字典(关联数组)是否为空?我只是使用 声明一个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 

这应该可以检查它是否为空。

相关内容