【发布时间】:2017-02-28 21:09:58
【问题描述】:
在脚本中放置以下内容将失败:
$MyString = @'
hello
@'
'@
bye
'@
write-host $MyString
返回的错误如下:
At C:\scripts\test.ps1:6 char:1
+ '@
+ ~~
The string is missing the terminator: '.
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
在嵌套的@' 和'@ 前加上反引号(重音)确实可以用作转义字符,但它也被视为文字,因此出现在$MyString 的输出中。
是否有一种正确方法可以在不干扰输出的单引号此处字符串中转义单引号此处字符串?
注意:
我应该提到外部here-string的内容是动态填充的,该内容由另一个程序作为命令行参数提供给powershell脚本。这没有反映在示例代码中,因为我不想用我非常具体且有点小众的实现来混淆这个问题。
外部 here-string 包含内部 here-string 的可能性不大(但它可能会发生),因此我觉得有必要进行一些防御性编程以适应这种情况。
【问题讨论】:
标签: powershell escaping herestring