PowerShell中包含反引号(`)的字符串使用-like比较结果异常问题
PowerShell含反引号字符串用-like比较返回false的问题说明
根因
- PowerShell 中
-like运算符执行通配符匹配逻辑,反引号(`)是通配符语法的专用转义字符,会被优先识别为转义标记,而非普通字符 - 测试语句
'abc@01' -like 'abc@01'中,右侧匹配模式里的反引号会被判定为对后续@的转义操作,实际生效的匹配规则变为匹配无反引号的abc@01,和左侧带反引号的原字符串不一致,因此返回false - 其他普通特殊字符(如
@、#、%等)不属于通配符保留字符,不会触发转义逻辑,因此同类比较可正常返回true
解决方案
- 方案1:仅需要精确相等判断时,直接使用
-eq运算符,该运算符执行纯字面量字符串对比,不会处理转义规则:
'abc`@01' -eq 'abc`@01' # 输出:True
- 方案2:如果必须使用
-like(需要同时搭配*/?等通配符逻辑),给模式中的反引号额外加一层转义,两种写法均可:- 用双反引号转义单个反引号:
'abc`@01' -like 'abc``@01' # 输出:True- 用方括号包裹反引号,标记为普通匹配字符:
'abc`@01' -like 'abc[`]@01' # 输出:True
内容的提问来源于stack exchange,提问作者Code_everyday
相关产品推荐
相关产品推荐

