Test

-n Vs !(驚嘆號)與測試命令的行為不同

  • February 25, 2016
#!/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]} ]]被評估為真實?

[[ -n ${numMap[1]} ]]測試字元串是否為空。不是,所以測試返回真。

引用自:https://unix.stackexchange.com/questions/265666