On Fri, Jan 17, 2025 at 23:32:18 -0500, Lawrence Velázquez wrote:
> Here's an attempt at clarification that restructures the section
> and describes the behavior of ${foo^x} more explicitly. It also
> avoids the aforementioned confusion between the ^/, "operators"
> and the ^/, "expansions".
>
> *Case modification.* This expansion modifies the case of
> alphabetic characters in _parameter_.
>
> The _pattern_ is expanded to produce a pattern just as in
> pathname expansion. The pattern should not attempt to match
> more than one character. If _pattern_ is omitted, it is
> treated like a `?', which matches every character.
>
> The `^' expansion examines the first character in the
> expanded value of _parameter_; if that character matches
> _pattern_ and is lowercase, it is converted to uppercase.
> The `^^' expansion works similarly, but it converts every
> matching lowercase character in the expanded value.
>
> The `,' and `,,' expansions work like `^' and `^^',
> respectively, except that they convert matching uppercase
> characters to lowercase.
>
> [final paragraph left as-is]
I agree that this is an improvement.
I still think the clause "The _pattern_ is expanded to produce a pattern"
is a bit circular. The "as in pathname expansion" part should probably be
changed to refer to the *Pattern Matching* section, which is the correct
reference. Perhaps the second paragraph should read something like this:
After expansion, the _pattern_ applies according to the rules
described under *Pattern Matching*. The _pattern_ should not attempt
to match more than one character. If _pattern_ is omitted, `?' is
used.
I think that's about as clear and concise as I can make it.