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".