Re: [PATCH] git-parse-remote: fix ambiguous shell bug in expand_refs_wildcard
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2016-06-15 22:43:08
On Tue, Dec 19, 2006 at 11:35:57AM +1100, herbert wrote:
On Mon, Dec 18, 2006 at 05:45:05PM -0500, Jeff King wrote:quoted
but doing it inside an interpolated string doesn't: $ foo=bar} $ echo "${foo%'}'}" bar}'}Yes it's a bug in dash. Both quote marks (" and ') are represented by the same char internally before processing which is where the mix-up occurs. I'll work on a fix.
Sorry for the delay. I've finally looked at fixing this. It turns out
that dash's behaviour is actually correct and POSIX compliant.
It's correct because dash treats all single quotes within double
quotes (except those within command substitutions) as literals.
This interpretation is also supported by POSIX.
In fact the rationale (C.2.2.3) in the POSIX document explicitly
disallows the aformentioned usage as it violates the rule that an
even number of single quotes if any can occur in an ${...} expression
enclosed by double quotes.
So the correct and portable expression in this case would be either
echo "${foo%\}}"
or
brace=}
echo "${foo%$brace}"
Cheers,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} [off-list ref]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt