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'?? :-(