为什么此阵列检查密钥是否失败?

时间:2016-05-03 13:42:06

标签: arrays linux bash posix

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

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

1 个答案:

答案 0 :(得分:1)

你在说:

if [ ! page_array${page_num+fooc} ] 

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

if [ ! some_text ] 

man test我们看到:

   ! EXPRESSION
          EXPRESSION is false

这就是为什么你的表达式在else中输入的原因:因为它的计算结果为false。

与以下内容相同,它返回" no":

[ ! a ] || echo "no"