-n Vs !(感叹号)与测试命令的行为不同

-n Vs !(感叹号)与测试命令的行为不同
#!/bin/bash
declare -A numMap
numMap[1]=1
#case-one
if ! [[ ${numMap[1]} ]];then
  echo "case-one: the key 1 for numMap array is not set"
fi
#case-two
if [[ -n ${numMap[1]} ]]; then
  echo "case-two: the key 1 for numMap array is not set"
fi

我希望 和! [[ ${numMap[1]} ]]都是[[ -n ${numMap[1]} ]]假的,因为numMap[1]包含一个有效值 - 1。但是当我运行代码时,它会打印

case-two: the key 1 for numMap array is not set

为什么,[[ -n ${numMap[1]} ]]被评价为true?

答案1

[[ -n ${numMap[1]} ]]测试字符串是否是不是空的。事实并非如此,因此测试返回 true。

相关内容