Date: Sun, 24 Jun 2018 15:52:21 +0200 From: tlaro...@polynum.com Message-ID: <20180624135221.gb...@polynum.com>
| It's a mess... Yes... | Wouldn't it be simple for POSIX to let the case...esac | as is and introduce a ecase...esac[e] (à la grep, egrep) with something | making more sense for corner cases? It might be rational for someone to do that, but it won't be posix which simply writes down what the standard is (what users can depend upon working) - they don't (at least most of the time) start inventing new stuff. In general, none of this really matters all that much - almost certainly not enough for some shell to implement something new, and then for it to be copied enough other places for it to be considered standard - it is all really just corner cases that the standard has to (attempt to) specify properly so as not to mess up the cases that people actually use. That's why, despite those 14 tests failing (assuming they are testing what should happen) no real scripts actually fail. And wrt the ps in your previous message ... | PS: I don't know if you have already modified the sh(1) man page You can check at https://man-k.org/ which allows you to view man pages of a whole host of systems, and versions. What we have now about this is ... The syntax of the case command is case word in [(] pattern ) [ list ] ;& [(] pattern ) [ list ] ;; ... esac The pattern can actually be one or more patterns (see Shell Patterns described later), separated by "|" characters. There's no explicit mention in the text of the optional '(' in the patterns (which is in posix too) - it is a pure noise character (its presence or absense changes nothing) - I think it was invented in ksh (the real one), and is there simply to allow editors that indicate matching () [] {} (etc) to not get confused by an excess number of ')'s in the file. I use it sometimes, and omit it other times, depending entirely on my mood at the time - and to a degree, how long the particular case expression is likely to remain around - if it is likely to be a stable script, I am nore likely to include that '(' than I do in truly "one off" scripts. kre