zsh-字符串通配符
通配符的基本用法
% str1=abcd
% str2=bc
# 星号要在引号外边
% [[ $str1 == *"$str2"* ]] && echo good
good
# 注意带通配符的字符串必须放在右边
% [[ *"$str2"* == $str1 ]] && echo good# 问号用于匹配一个任意字符
% [[ abcd == ab?? ]] && echo good
good
# 中括号用于匹配出现在其中的单个字符
% [[ abcd == abc[bcd] ]] && echo good
good
# 如果中括号里第一个字符是 ^,则匹配除了除了中括号里的单个字符
% [[ abcd == abc[^de] ]] && echo good
% [[ abcd == abc[^ce] ]] && echo good
good
# 中括号里可以指定字符的范围
% [[ a4 == [a-b][2-5] ]] && echo good
good
# 可以指定多个字符范围,并且可以掺杂其他字符
% [[ B4 == [a-cdddA-B][2-5] ]] && echo good
good
# 尖括号用于匹配一定范围的单个整数
% [[ 123 == 12<3-4> ]] && echo good
good
# 可以匹配整个整数
% [[ 123 == <100-200> ]] && echo good
good
# 可以没有上下界,默认的下界是 0,上界是正无穷
% [[ 123 == <100-> && 123 == <-200> ]] && echo good
good
# 可以上下界都没有,那么会匹配任意正整数和 0
# 这个可以用来判断字符串是否构成整数
# [[ 123 == <-> ]] && echo good
good
# ( 1 | 2 | ... ) 用于同时判断多个条件,满足一个即可
% [[ ab == (aa|ab) ]] && echo good
good
# 如果中括号里要用 - 或者 ^,放在最后即可,不需要转义
% [[ -^3 == [a-c-][3^-][3^-] ]] && echo good
good
加强版通配符
通配符
含义
匹配的样例