mirror of
https://github.com/opnsense/src.git
synced 2026-04-01 23:45:12 -04:00
?, [...] 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).)
57 lines
829 B
Text
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
|