Test
-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]} ]]
被評估為真實?
[[ -n ${numMap[1]} ]]
測試字元串是否不為空。不是,所以測試返回真。