[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 6/7] syntax-check: fix violations and implement sc_prohibit_t
From: |
Gary V. Vaughan |
Subject: |
Re: [PATCH 6/7] syntax-check: fix violations and implement sc_prohibit_test_const_follows_var. |
Date: |
Tue, 22 Nov 2011 12:50:43 +0700 |
Hi Eric,
On 22 Nov 2011, at 03:07, Eric Blake wrote:
> On 11/21/2011 07:47 AM, Gary V. Vaughan wrote:
>> To safely use a non-literal first argument to `test', you must
>> always prepend a literal non-`-' character, but often the second
>> operand is a constant that doesn't begin with a `-' already, so
>> always use `test a = "$b"' instead of noisy `test "X$b" = Xa'.
>
> Not true.
>
> test a = "$b"
>
> is just as likely to trigger improper evaluation in buggy test(1)
> implementations as:
>
> test "$b" = a
:-o For real? On non-museum pieces?
I tested a bunch of /bin/sh, bash, ksh and zsh versions that I have
easy access to, and for all of them, the only way to upset test with
leading hyphens is in the first argument.
> If you cannot guarantee the contents of "$b", then you MUST prefix both
> sides of the comparison with x or X. Conversely, if you CAN guarantee
> the contents of "$b" (for example, if you did b=$?, then you KNOW that b
> is a numeric tring with no problematic characters), then you might as
> well use the more idiomatic comparison of variable to constant.
I don't suppose you can point me at a shell that chokes or fails on:
test a != -b || echo bug
? Or at least some reliable documentation that shows we're not dealing
with outdated dogma here?
I'll postpone pushing this patch until we get to the bottom of the
issue though.
Cheers,
--
Gary V. Vaughan (gary AT gnu DOT org)
- [PATCH 2/7] syntax-check: fix violations and implement sc_useless_quotes_in_assignment., (continued)
Re: [PATCH 6/7] syntax-check: fix violations and implement sc_prohibit_test_const_follows_var., Stefano Lattarini, 2011/11/21
Re: [PATCH 1/7] syntax-check: fix violations and implement sc_useless_quotes_in_case., Eric Blake, 2011/11/21
Re: [PATCH 1/7] syntax-check: fix violations and implement sc_useless_quotes_in_case., Gary V. Vaughan, 2011/11/25