📄 posixpat.tests
字号:
# A test suite for the POSIX.2 (BRE) pattern matching codeLC_ALL=CLANG=C# First, test POSIX.2 character classescase e in[[:xdigit:]]) echo ok 1;;esaccase a in[[:alpha:]123]) echo ok 2;;esaccase 1 in[[:alpha:]123]) echo ok 3;;esaccase 9 in[![:alpha:]]) echo ok 4;;esac# invalid character class expressions are just characters to be matchedcase a in[:al:]) echo ok 5;;esaccase a in[[:al:]) echo ok 6;;esaccase '!' in[abc[:punct:][0-9]) echo ok 7;;esac# let's try to match the start of a valid sh identifiercase 'PATH' in[_[:alpha:]]*) echo ok 8;;esac# let's try to match the first two characters of a valid sh identifiercase PATH in[_[:alpha:]][_[:alnum:]]*) echo ok 9;;esac# is ^C a cntrl character?case $'\003' in[[:cntrl:]]) echo ok 10;;esac# how about A?case A in[[:cntrl:]]) echo oops -- cntrl ;;*) echo ok 11;;esaccase 9 in[[:digit:]]) echo ok 12;;esaccase X in[[:digit:]]) echo oops -- digit;;*) echo ok 13;;esaccase $'\033' in[[:graph:]]) echo oops -- graph;;*) echo ok 14;;esaccase $'\040' in[[:graph:]]) echo oops -- graph 2;;*) echo ok 15;;esaccase ' ' in[[:graph:]]) echo oops -- graph 3;;*) echo ok 16;;esaccase 'aB' in[[:lower:]][[:upper:]]) echo ok 17;;esaccase $'\040' in[[:print:]]) echo ok 18;;*) echo oops -- print;;esaccase PS3 in[_[:alpha:]][_[:alnum:]][_[:alnum:]]*) echo ok 19;;esaccase a in[[:alpha:][:digit:]]) echo ok 20;;*) echo oops - skip brackpat ;;esaccase a in[[:alpha:]\]) echo oops -- dangling backslash in brackpat ;;*) echo ok 21 ;;esac# what's a newline? is it a blank? a space?case $'\n' in[[:blank:]]) echo ok -- blank ;;[[:space:]]) echo ok -- space ;;*) echo oops newline ;;esac# OK, what's a tab? is it a blank? a space?case $'\t' in[[:blank:]]) echo ok -- blank ;;[[:space:]]) echo ok -- space ;;*) echo oops newline ;;esac# let's check out characters in the ASCII rangecase $'\377' in[[:ascii:]]) echo oops -- ascii\?;;esaccase 9 in[1[:alpha:]123]) echo oops 1;;esac# however, an unterminated brace expression containing a valid char class# that matches had better failcase a in[[:alpha:]) echo oops 2;;esaccase $'\b' in[[:graph:]]) echo oops 3;;esaccase $'\b' in[[:print:]]) echo oops 4;;esaccase $' ' in[[:punct:]]) echo oops 5;;esac# Next, test POSIX.2 collating symbolscase 'a' in[[.a.]]) echo ok 1;;esaccase '-' in[[.hyphen.]-9]) echo ok 2;;esaccase 'p' in[[.a.]-[.z.]]) echo ok 3;;esaccase '-' in[[.-.]]) echo ok 4;;esaccase ' ' in[[.space.]]) echo ok 5;;esaccase ' ' in[[.grave-accent.]]) echo oops - grave;;*) echo ok 6;;esaccase '4' in[[.-.]-9]) echo ok 7;;esac# an invalid collating symbol cannot be the first part of a rangecase 'c' in[[.yyz.]-[.z.]]) echo oops - yyz;;*) echo ok 8;;esaccase 'c' in[[.yyz.][.a.]-z]) echo ok 9;;esac# but when not part of a range is not an errorcase 'c' in[[.yyz.][.a.]-[.z.]]) echo ok 10 ;;esaccase 'p' in[[.a.]-[.Z.]]) echo oops -- bad range ;; *) echo ok 11;;esaccase p in[[.a.]-[.zz.]p]) echo ok 12;;*) echo oops -- bad range 2;;esaccase p in[[.aa.]-[.z.]p]) echo ok 13;;*) echo oops -- bad range 3;;esaccase c in[[.yyz.]cde]) echo ok 14;;esaccase abc in[[.cb.]a-Za]*) echo ok 15;;esaccase $'\t' in[[.space.][.tab.][.newline.]]) echo ok 16;;esac# and finally, test POSIX.2 equivalence classescase "abc" in[[:alpha:]][[=b=]][[:ascii:]]) echo ok 1;;esaccase "abc" in[[:alpha:]][[=B=]][[:ascii:]]) echo oops -- =B=;;*) echo ok 2 ;;esaccase a in[[=b=]) echo oops;; # an incomplete equiv class is just a string*) echo ok 3;;esac
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -