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.