set -A hash
hash=([defined_value]=22)
echo ${hash[defined_value]}
22
[[ -v ${hash[defined_value]} ]] && echo pass
[[ -v ${hash[defined_value]} ]] || echo fail
fail
[[ -v {hash[defined_value]} ]] || echo fail
fail
[[ -v hash[defined_value] ]] || echo fail
fail
[[ -v \${hash[defined_value]} ]] || echo fail
fail
echo $BASH_VERSION
4.2.45(1)-release
How do I test if a value is defined in a hash?
This seems more messy and isn't -v supposed
to help clean up such things?
[[ ${hash[defined_value]:-""} ]] || echo fail #it passes
[[ ${hash[defined_value1]:-""} ]] || echo fail
fail
So why no '-v'?? :-(