Re: expand: Do not quote backslashes in unquoted parameter expansion

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

 



On Tue, Mar 27, 2018 at 01:07:21PM +0200, Harald van Dijk wrote:
>
> If POSIX specifies a result, and a shell applies an optimisation that causes
> a different result to be produced, doesn't that inherently disallow that
> optimisation? There may be some confusion and/or disagreement over what
> exactly POSIX specifies and/or intends to specify, but I don't see how you
> can argue that POSIX specifies result A, but it's okay to apply an
> optimisation that produces result B.

Wait, you're talking about something completely different.  The
crux of the issue is whether POSIX allows the backslash to escape
the character after it or does it have to be a literal backslash.

In fact POSIX is perfectly clear on this:

	2.13.1 Patterns Matching a Single Character

	The following patterns matching a single character shall match a
	single character: ordinary characters, special pattern characters,
	and pattern bracket expressions. The pattern bracket expression
	also shall match a single collating element. A <backslash>
	character shall escape the following character. The escaping
	<backslash> shall be discarded. If a pattern ends with an
	unescaped <backslash>, it is unspecified whether the pattern
	does not match anything or the pattern is treated as invalid.

Nowhere does it say that backslashes that come from the result of
parameter expansion is always literal.

So it's clear that any shell that treats the backslash as a literal
backslash is already broken.

> Can you show me any shell other than bash that lets this optimisation affect
> the results?

The fact is that the other shells are not doing what they do because
they're not doing this optimisation.  They do what they do because
they have broken POSIX because they always treat backslashes that
arise from parameter expansion as literal backslashes.

FWIW it wouldn't be hard to iron out the anomalous case of /d\ev.
You just have treat the backslash as a metacharacter.

Cheers,
-- 
Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux