On Sat, Aug 29, 2020 at 11:13 PM Bruce Lilly <bruce.li...@gmail.com> wrote:
> It's a bit more complicated than that; if, for example, some excerpt ended > up in regression tests, there would be a question about whether or not > there was a copyright violation. As I understand the GPL (IANAL), it > requires all parts of a "work" to be GPL'd, and that wouldn't be possible > for any parts of the script that ended up in bash regression tests. > That's hilarious. People post proof-of-concept scripts and code snippets as part of bug reports and such every day. If you'd just reduced the problem to a simple demonstration (below), you could have explicitly licensed it under the GPL if you were afraid someone might want to include it to a GPL'd software. In any case, for a one-liner like this, it might not even be copyrightable (at least not everywhere) as pretty much lacks any creativity. I'd also assume that test scripts often aren't even compiled with the main program, just aggregated to the code distribution. Anyway, it wouldn't be you doing the copyright violation if someone used your snippet without license. Bash and ksh indeed differ in this: $ bash -c 'str=foo/; sep="\057"; printf %s\\n ${str%%$sep}' foo/ $ ksh -c 'str=foo/; sep="\057"; printf %s\\n ${str%%$sep}' foo And there's nothing in the Bash manuals that says \057 should be taken as an octal escape in a pattern match. The workarounds to that are either sep=$'\057' which is documented to accept escapes like this, or sep=/ which just works in the obvious manner. I do wonder why you'd even bother with trying the octal escape here instead of just writing the slash as a slash. Something like \001 would be different, of course. The fact that $'\057' does what you seem to want is exactly the part where you might have used a form of quoting which would have worked, but there was no way for the reader to check that because you hid the code. $'' is described here: https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html (search for 'octal') Of course, you also appear to have missed extglob, which I guess is understandable if you're coming from ksh. But even so, reducing the problem to smaller, easier to debug pieces would have shown the difference there, too, separately from the differences in handling of octal escapes. And perhaps led you to read the rest of what the manual says on Pattern Matching, from the exact page you linked to. ("If the extglob shell option is enabled using the shopt builtin, several extended pattern matching operators are recognized...")