is correct, as "foo" does not contain a ']' which would be required
> to match there (quoting the ':' means there is no character class,
> hence we have instead (the negation of) a char class containing '[' ':'
> 'l' 'o' 'w' 'e' ';r' (and ':' again), preceded by anything, and
> followed by ']' and
Date:Sat, 9 Nov 2019 00:50:52 +0300
From:=?UTF-8?B?T8SfdXo=?=
Message-ID:
These two
| v=foo
| echo ${v#[[:"lower":]]}
| case foo in (*[![:"lower":]]*) echo bar; esac
are because bash believes that the character class name must not
be quoted (which is likely
v=foo
echo ${v#[[:"lower":]]}
should print oo, but it prints foo instead. This is reproducible on bash
>4.4
Plus
case foo in (*[![:"lower":]]*) echo bar; esac
prints bar, while
case foo in (*[![":lower":]]*) echo bar; esac
doesn't print anything. And this is only reproducible on bash >5.0