[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Race in bash-4.3 'typeset'?

From: Martijn Dekker
Subject: Re: Race in bash-4.3 'typeset'?
Date: Tue, 25 Oct 2016 06:40:04 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.4.0

Op 25-10-16 om 00:42 schreef Stuart Shelton:
> Failing this, is there any alternative to ‘typeset’ to list a
> variable declared as local to a function but which has not yet been
> assigned a value?

Try simply testing the exit status of 'typeset -p' or 'declare -p'. If
the variable is not declared, it exits unsuccessfully.

    if typeset -p "$var" >/dev/null 2>&1 && [[ ! -v $var ]]
    then ...

As far as I can tell, this is not documented in 'help' or in the info
page, by the way. Perhaps it should be.

Also note that, while zsh and yash share this behaviour, ksh93 and
mksh/pdksh do not. If you want to be compatible with all the shells that
support 'typeset', you could do:

    if [ -n "$(typeset -p "$var" 2>/dev/null)" ] &&
       eval "[ -z \"\${var+s}\" ]"
    then ...

which is slower because it uses a subshell.


- M.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]