On Thu, Apr 13, 2023 at 12:12:23AM +0000, David wrote: > $ echo [^0-9]* > 11 22 <------ new behaviour by dash
The [^chars] syntax is a negation in Basic and Extended Regular Expressions, and in bash's globs (it's a bash extension), but NOT in POSIX globs. The correct negation syntax in POSIX sh globs is [!chars]. This goes all the way back to the original Bourne shell, where the ^ character was a synonym for | (pipe), because many terminals did not have a | character. Due to the way sh parses commands, using ^ in globs would have caused problems. That's why sh uses [!chars].