
#!/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]} ]]
事実と評価されますか?
答え1
[[ -n ${numMap[1]} ]]
文字列が次のようにテストします。いいえ空です。これは真ではないため、テストはtrueを返します。