On Thu, Nov 07, 2024 at 02:38:05 +0000, David Linden wrote:
> Description:
> This errors in 4.4, did not in 4.2: set -u; declare -A foo; echo
> ${#foo[@]}
> How am I supposed to determine that a declared associative array is
> empty?
The easiest way would be to ensure that the array variable is actually
created:
set -u; declare -A foo=(); echo "${#foo[@]}"
Without the =() part, declare -A only creates a placeholder, which will
assign the -A flag to a future variable named foo, if one is ever created.
You need an assignment to create the variable.