On Mon, Apr 08, 2013 at 10:32:40AM -0400, Chet Ramey wrote:
> One clarification: a variable is unset unless it has had a value assigned.
> There might be some placeholder there with some type information, but the
> variable is unset.  There might be some inconsistencies in how bash treats
> such variables, and I can fix those, but the above is how it's supposed
> to be.

Well, this was in the context of a function receiving a variable name in
an argument, using "declare -n", and then attempting to learn what kind
of variable the argument refers to.

If the argument is the name of an empty associative array (declare -A foo),
then associative array operations (such as x=${ref["."]}) work; if the
argument is the name of an empty indexed array (declare -a foo), then
those operations do not work.  And because the arrays are empty, you
can't just see what's inside them.

(If the arrays are non-empty, you can just look at them with
"declare -p ref" and the second word of the output will be "-a" or "-A",
and voila.)

Whether that's important in an actual script/function, I don't know.
Personally I'd be inclined to let the function fail and then the user
(caller) would be responsible for fixing his code.  But I can't speak for
"konsolebox".

Reply via email to