opnsense-src/tools/regression/bin/sh/builtins/case5.0
Jilles Tjoelker 7cc6b3df80 sh: Add UTF-8 support to pattern matching.
?, [...] patterns match codepoints instead of bytes. They do not match
invalid sequences. [...] patterns must not contain invalid sequences
otherwise they will not match anything. This is so that ${var#?} removes the
first codepoint, not the first byte, without putting UTF-8 knowledge into
the ${var#pattern} code. However, * continues to match any string and an
invalid sequence matches an identical invalid sequence. (This differs from
fnmatch(3).)
2011-05-08 11:32:20 +00:00

57 lines
829 B
Text

# $FreeBSD$
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