>>>>> On Thu, 20 Feb 2020, Chet Ramey wrote: > On 2/20/20 10:05 AM, Ulrich Mueller wrote: >>>>>>> On Thu, 20 Feb 2020, pepa65 wrote: >> >>> On 20/02/2020 19.48, Ulrich Mueller wrote: >>>> Still, I think it's sad that there isn't a command that can test for >>>> assigned vs void variable, without the need for parsing of declare -p >>>> output. >> >>> There is no need to parse, the return value of `declare -p var` or >>> `typeset -p var` will tell you what you want. >> >> Unfortunately, it doesn't: >> >> $ f() { >> > local var >> > var="foo" >> > declare -p var >> > echo $? >> > unset var >> > declare -p var >> > echo $? >> > } >> $ f >> declare -- var="foo" >> 0 >> declare -- var >> 0
> It's unset because it doesn't have a value, but it retains the `local' > attribute so it stays local if subsequently assigned one. No objections about that. I was just saying that testing the return status of declare -p is not enough. To find out if a variable is set or unset, the output must be parsed, e.g., for presense of the = sign.