Added case $x in *[!...]*) -- more portable than ... *[^...]* syntax