Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > gnu.bash.bug > #15815
| From | Martijn Dekker <martijn@inlv.org> |
|---|---|
| Newsgroups | gnu.bash.bug |
| Subject | [PATCH] efficient [[ -v 1 ]] [was: Should [[ -v 1 ]] be supported?] |
| Date | 2020-01-18 20:48 +0100 |
| Message-ID | <mailman.2924.1579376918.1979.bug-bash@gnu.org> (permalink) |
| References | <CABrM6wmrn2gi8_HgmRg67B5nsgGNFRn8Bn-r20MvC-_2LJHZ0g@mail.gmail.com> <5dac2cf2-2fac-0fd1-058f-6a84a3271738@case.edu> <abd86dbc-f6e2-62bd-e9dc-f959e2dbff9f@inlv.org> <f19a07b9-e3a8-96f4-4fd9-98358dd2ccc2@case.edu> <858f35a5-50d1-0393-833b-7625f50979ac@inlv.org> |
Op 29-12-18 om 01:19 schreef Chet Ramey:
> On 12/27/18 3:11 PM, Martijn Dekker wrote:
>
>> 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} ]].
>
> The completeness argument is more rigorous, and there's a case to add this
> in a future version of bash. He didn't make that argument, though.
I noticed some deactivated code tagged bash-5.1 with my name on it. Cool. :)
Isn't the way below much more efficient, though? There's no need to
retrieve and discard the value of a positional parameter -- we can just
compare the number to $#, i.e. number_of_args(). Any number between 0
and $#, inclusive, represents a set positional parameter by definition.
- M.
diff --git a/test.c b/test.c
index 9cbc0436..27efd9f7 100644
--- a/test.c
+++ b/test.c
@@ -640,12 +640,7 @@ unary_test (op, arg)
#if 0 /* TAG:bash-5.1 from Martijn Dekker */
else if (legal_number (arg, &r)) /* -v n == is $n set? */
{
- char *t;
- int ret;
- t = get_dollar_var_value (r);
- ret = t ? TRUE : FALSE;
- free (t);
- return ret;
+ return (r >= 0 && r <= number_of_args());
}
#endif
v = find_variable (arg);
--
modernish -- harness the shell
https://github.com/modernish/modernish
Back to gnu.bash.bug | Previous | Next | Find similar | Unroll thread
[PATCH] efficient [[ -v 1 ]] [was: Should [[ -v 1 ]] be supported?] Martijn Dekker <martijn@inlv.org> - 2020-01-18 20:48 +0100
csiph-web