#!/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。