【发布时间】:2015-07-13 08:48:28
【问题描述】:
我正在尝试开发一个脚本,将输入文本中的某些标记替换为新的测试字符串。在this 的帮助下,我开发了以下内容:
$repl = @{}
$repl.add('SVN',"myworkspace\BRANCH71")
$repl.add('REL',"72")
$string = 'C:\users\rojomoke\filesREL\SVN\blah.txt'
foreach ($h in $repl.getenumerator())
{
write-host "Line: $($h.name): $($h.value)"
$string = $string -replace "$($h.name)","$($h.value)"
write-host $string
}
产生所需的C:\users\rojomoke\files72\myworkspace\BRANCH71\blah.txt。
但是,当我尝试使用以$ 符号开头的标记时,这一切都归于 sh^H^Hpieces。如果在上面的示例中我使用标记 $REL 和 $SVN,则不会发生替换,$string 仍为 C:\users\rojomoke\files$REL\$SVN\blah.txt。
我假设我正在与正则表达式扩展或其他东西发生冲突,但我不知道如何。是否可以引用美元符号以使其正常工作?
我使用的是 Powershell 版本 3。
【问题讨论】:
标签: powershell replace associative-array powershell-3.0