tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: shell (/bin/sh) pattern matching bugs
Rhialto <rhialto%falu.nl@localhost> wrote:
> On Mon 25 Jun 2018 at 01:58:25 +0700, Robert Elz wrote:
>> Date: Sun, 24 Jun 2018 19:09:58 +0200
>> From: Rhialto <rhialto%falu.nl@localhost>
>> Message-ID: <20180624170958.GJ8143%falu.nl@localhost>
>>
>> | Are we to assume that NetBSD's sh(1) manual page is correct?
>>
>> Well, yes and no...
>>
>> | Since that clearly says that your example above should not match.
>>
>> Actually, it doesn't - it just kind of slides by this case... That is, it
>> makes no mention of what happens if characters inside [ ] are
>> quoted (partly because I don't much like the quoting solution,
>> and never thought the ordering method was hard to get right...)
>
> Well, I don't entirely agree. The description of patterns starts with
> (sh(1) from NetBSD-7)
>
> Shell Patterns
> A pattern consists of normal characters, which match themselves, and
> meta-characters. The meta-characters are ``!'', ``*'', ``?'', and ``[''.
> These characters lose their special meanings if they are quoted. When
>
> so I would conclude that '-' cannot lose its meaning if quoted, since it
> is not a meta-character.
>
> Added to that, that it gives some other way to include a literal '-' in
> a character class, reinforces the impression that [a\-z] does not have a
> quoted '-' in it. So while it doesn't explicitly say it, it leaves
> little room for a different interpretation.
>
> (All this of course apart from how things actually worked; and I
> actually never realised that they didn't work like I interpret the text
> here)
>
>> The man page shouild probably be fixed to be more precise - there
>> are all kinds of details it omits.
>
> Definitely!
There's glob(7) that talks about quoting explicitly, unlike sh(1) or
glob(3). glob(3) talks about quoting in passing when discussing
GLOB_NOESCAPE.
-uwe
Home |
Main Index |
Thread Index |
Old Index