当前位置:  开发笔记 > 编程语言 > 正文

如何忽略存储在PowerShell字符串变量中的转义序列?

如何解决《如何忽略存储在PowerShell字符串变量中的转义序列?》经验,为你挑选了1个好方法。

在我的PowerShell脚本中,我在许多文件上运行Select-String,查找通过变量($ id)传递给它的字符串:

foreach ($file in (ls "path\to\files")) {
    $found = $false
    $found = Select-String -Path $file $id -Quiet
    if ($found) {
        break
    }
}

不幸的是,$ id变量有时会像"\ C"或"\ T"这样,Select-String会尝试将其解释为转义序列.这些不是有效的转义序列,因此Select-String会引发错误.它们不是转义序列(例如,它可能是文件路径的一部分,例如"C:\ Test"),那么如何防止PowerShell/Select-String将它们解释为?我试过在$ id周围使用括号而没有运气.



1> Shay Levy..:

使用静态escape()方法,它指示正则表达式引擎按字面解释这些字符而不是元字符:

$id = [regex]::escape($id)

您还可以将命令转换为单行(-path可以采用文件集合):

Select-String -Path path\to\files\\* -Pattern ([regex]::escape($id)) -Quiet

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有