为什么这个数组检查密钥失败?

Why is this array check for key failing?

declare -A page_array

if [ ! page_array${page_num+fooc} ] 
then
    echo "key $page_num not exists"
    page_array[$page_num]="something"
else
    echo "key $page_num  exists"
fi

为什么我总是存在。 我刚刚声明了一个数组,但没有向它添加任何键。

你是说:

if [ ! page_array${page_num+fooc} ] 

这是一个无效的表达式(您缺少调用变量的 $,以及引用元素的括号 --> $var[index])。因此,表达式转换为:

if [ ! some_text ] 

man test我们看到:

   ! EXPRESSION
          EXPRESSION is false

这就是为什么您的表达式进入 else: 因为它的计算结果为 false。

和下面说的一样,returns "no":

[ ! a ] || echo "no"