On Wed, Feb 14, 2018 at 9:03 PM, Harald van Dijk <harald@xxxxxxxxxxx> wrote: > Currently: > > $ dash -c 'foo=a; echo "<${foo#[a\]]}>"' > <> > > This is what I expect, and also what bash, ksh and posh do. > > With your patch: > > $ dash -c 'foo=a; echo "<${foo#[a\]]}>"' > <a> I was looking into this specific example and I believe it is a _bash_ bug. The [a\]] is misinterpreted by it (and probably by many people). The gist is: \] is not a valid escape for ] in set glob expression. Glob sets have no escaping at all, ] can be in a set if it is the first char: []abc], dash can be in a set if it is first or last: [abc-], [ and \ need no protections at all: [a[b\c] is a valid set of 5 chars. Therefore, "[a\]]" glob pattern means "a or \, then ]". Since that does not match "a", the result of ${foo#[a\]]}> should be "a". -- 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