unset LC_ALL LC_CTYPE=en_US.UTF-8 export LC_CTYPE c1=e # a umlaut c2=$(printf '\303\244') # euro sign c3=$(printf '\342\202\254') # some sort of 't' outside BMP c4=$(printf '\360\235\225\245') ok=0 case $c1$c2$c3$c4 in *) ok=1 ;; esac if [ $ok = 0 ]; then echo wrong at $LINENO exit 3 fi case $c1$c2$c3$c4 in $c1$c2$c3$c4) ;; *) echo wrong at $LINENO ;; esac case $c1$c2$c3$c4 in "$c1$c2$c3$c4") ;; *) echo wrong at $LINENO ;; esac case $c1$c2$c3$c4 in ????) ;; *) echo wrong at $LINENO ;; esac case $c1.$c2.$c3.$c4 in ?.?.?.?) ;; *) echo wrong at $LINENO ;; esac case $c1$c2$c3$c4 in [!a][!b][!c][!d]) ;; *) echo wrong at $LINENO ;; esac case $c1$c2$c3$c4 in [$c1][$c2][$c3][$c4]) ;; *) echo wrong at $LINENO ;; esac case $c1$c2$c3$c4 in ["$c1"]["$c2"]["$c3"]["$c4"]) ;; *) echo wrong at $LINENO ;; esac