Op 27-12-18 om 19:22 schreef Chet Ramey:
On 12/26/18 10:49 PM, Peng Yu wrote:Although [[ -z ${1+s} ]] and (($#)) works for testing if $1 is set, neither of them are uniformly better performance wise. In this case, should [[ -v 1 ]] be supported?So you're saying that neither of the existing options performs better than the other, though they both perform well, so we should add some new capability just because? That's a particularly poor argument.
Consistency might be a better argument. If [[ -v foo ]] is equivalent to [[ -n ${foo+s} ]] for variables (with the advantage that you don't need 'eval' to handle arbitrary values of 'foo'), then perhaps it's not unreasonable to expect [[ -v 1 ]] to be equivalent to [[ -n ${1+s} ]].
FWIW, zsh and mksh do support this; ksh93 doesn't. - M.
