[Bug 14526] New: possible wrong behaviour with patterns double [ with no closing ]
bugzilla at busybox.net
bugzilla at busybox.net
Mon Jan 17 03:28:46 UTC 2022
https://bugs.busybox.net/show_bug.cgi?id=14526
Bug ID: 14526
Summary: possible wrong behaviour with patterns double [ with
no closing ]
Product: Busybox
Version: 1.30.x
Hardware: All
OS: All
Status: NEW
Severity: normal
Priority: P5
Component: Standard Compliance
Assignee: unassigned at busybox.net
Reporter: calestyo at scientia.org
CC: busybox-cvs at busybox.net
Target Milestone: ---
Hey.
Assuming a pattern of:
[.*^\]
my understanding was that this would actually mean:
- the literal string [. followed by
- the pattern notation special character * (i.e. any string) followed by
- the literal string ^]
Because ] is escaped, it's to be taken literally and in a pattern a [
without corresponding ] is to be taken literally as well.
(see POSIX,
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_13
)
That seems to work in busybox sh:
$ case '[.^]' in ([.*^\]) echo match;; (*) echo no match;; esac
match
$ case '[.x^]' in ([.*^\]) echo match;; (*) echo no match;; esac
match
$ case '[.xx^]' in ([.*^\]) echo match;; (*) echo no match;; esac
match
However, adding another [ to the pattern:
[.*^[\]
which should be:
- the literal string [. followed by
- the pattern notation special character * (i.e. any string) followed by
- the literal string ^[]
No longer matches:
$ case '[.^[]' in ([.*^[\]) echo match;; (*) echo no match;; esac
no match
$ case '[.x^[]' in ([.*^[\]) echo match;; (*) echo no match;; esac
no match
$ case '[.xx^[]' in ([.*^[\]) echo match;; (*) echo no match;; esac
no match
Whereas, AFAIU POSIX, it should.
This works, btw. in bash, but neither in dash, nor klibc sh.
Cheers,
Chris.
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the busybox-cvs
mailing list