: ${TMPDIR:=/var/tmp} cd $TMPDIR matchfunc() { echo == LANG=$LANG == touch a p echo [[:alpha:] rm a p case l in [[:alpha:]) echo bad 1;; *) echo ok 1;; esac touch '[a' '[x' echo [[:alpha:] rm '[a' echo [[:alpha:] rm '[x' case [a in [[:alpha:]) echo ok 2;; *) echo bad 2;; esac case [x in [[:alpha:]) echo bad 3;; *) echo ok 3;; esac } echo invalid bracket expression export LANG=C matchfunc export LANG=en_US.UTF-8 matchfunc unset -f matchfunc matchfunc() { echo == LANG=$LANG == case a] in [[:aleph:]]) echo bad 1;; *) echo ok 1;; esac case a in [[:aleph:]]) echo bad 2;; *) echo ok 2;; esac case a] in [[:"alpha":]]) echo bad 3;; *) echo ok 3;; esac case a in [[:"alpha":]]) echo bad 4;; *) echo ok 4;; esac case a in [abc[:foo:]]) echo ok 5;; *) echo bad 5 ;; esac case a in [[:foo:]abc]) echo ok 6;; *) echo bad 6 ;; esac } echo invalid character class export LANG=C matchfunc export LANG=en_US.UTF-8 matchfunc unset -f matchfunc matchfunc() { echo == LANG=$LANG == case h in [[.hyphen.]) echo bad 1;; *) echo ok 1;; esac case - in [[.hyphen.]]) echo ok 2;; *) echo bad 2;; esac case slash in [[.slash.]]) echo bad 3;; *) echo ok 3;; esac case a in [abc[.nonsense.]]) echo ok 4;; *) echo bad 4 ;; esac case a in [[.nonsense.]abc]) echo ok 5;; *) echo bad 5 ;; esac } echo invalid collating symbols export LANG=C matchfunc export LANG=en_US.UTF-8 matchfunc