i-bash/tests/cond-regexp3.sub
2014-02-26 09:36:43 -05:00

73 lines
1.6 KiB
Text
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# simple expansion -- no problem, it's quote_string_for_globbing that was flawed
c=$'\177'
r="\\$c"
recho $r
# first, match some regular expressions containing ^A, ^G, ^?
[[ $'\001' =~ $'\001' ]] ; echo $?
[[ $'\001' =~ $'\\\001' ]] ; echo $?
[[ $'\001' =~ $'\\[\001]' ]] ; echo $?
[[ $'\a' =~ $'\a' ]] ; echo $?
[[ $'\a' =~ $'\\\a' ]] ; echo $?
[[ $'\a' =~ $'\\[\a]' ]] ; echo $?
[[ $'\177' =~ $'\177' ]] ; echo $?
[[ $'\177' =~ $'\\\177' ]] ; echo $?
[[ $'\177' =~ $'\\[\177]' ]] ; echo $?
# Now let's try it with variables expanding to those values
for c in $'\001' $'\a' $'\177' ; do
for r in "$c" "\\$c" "\\[$c]"; do
[[ $c =~ $r ]];
printf '[[ %q =~ %q ]] -> %d\n' "$c" "$r" "$?";
done;
printf %s\\n ---
done
# try again with literals
[[ '' =~ $'' ]] ; echo $?
[[ '' =~ '\' ]] ; echo $?
[[ '' =~ '\[]' ]] ; echo $?
[[ '' =~ '' ]] ; echo $?
[[ '' =~ '\' ]] ; echo $?
[[ '' =~ '\[]' ]] ; echo $?
[[ '' =~ $'' ]] ; echo $?
[[ '' =~ '\' ]] ; echo $?
[[ '' =~ '\[]' ]] ; echo $?
# more expansions, but with literal non-special characters
[[ x =~ \x ]] ; echo $?
[[ x =~ \\x ]] ; echo $?
bs='\'
[[ x =~ ${bs}x ]] ; echo $?
[[ x =~ $'\\'x ]] ; echo $?
[[ x =~ '\'x ]] ; echo $?
v='a\-b'
[[ a-b =~ ${v} ]] ; echo $?
[[ a-b =~ a\-b ]]; echo $?
[[ a-b =~ a${bs}-b ]]; echo $?
[[ a-b =~ a\\-b ]] ; echo $?
[[ a-b =~ "a\-b" ]] ; echo $?
c=$'\001'
recho $c "$c"
[[ $c == $c ]] && echo ok 1
[[ $c =~ $c ]] && echo ok 2
[[ $c =~ \\$c ]] || echo ok 3
[[ $c =~ \\"$c" ]] || echo ok 4
[[ $c =~ "\\"$c ]] || echo ok 5
[[ $c =~ '\'$c ]] || echo ok 6
[[ $c =~ "\\""$c" ]] || echo ok 7
[[ $c =~ '\'"$c" ]] || echo ok 8