这是我的子表达式:
"""$((($l -split " """)[1] -split """ ")[0])"""
Run Code Online (Sandbox Code Playgroud)
我检查过,没有发现未配对的括号。然而,powershell 坚持说“在表达中缺少结束')'。” 有趣的是,表达式
$((($l -split " """)[1] -split """ ")[0])
Run Code Online (Sandbox Code Playgroud)
工作正常。
有没有人有过类似的经历?这是Powershell的错误吗?
这.. 真的很有趣,是的,至少到目前为止,我认为这是一个错误。
这是一个更简单的重现:
"$("`"")"
"$("""")"
Run Code Online (Sandbox Code Playgroud)
这似乎是由在子表达式中、可扩展字符串中使用任一形式的双引号转义(反引号或双引号)引起的。
看来这是错误归结为解析器本身:
$sb = @'
"$("`"")"
'@
$tokens = $null
$er = $null
$ast = [System.Management.Automation.Language.Parser]::ParseInput($sb, [ref]$tokens, [ref]$er)
$ast.EndBlock.Statements[0].PipelineElements[0].Expression.NestedExpressions
$tokens[0].NestedTokens
Run Code Online (Sandbox Code Playgroud)
它找到的嵌套标记/表达式不正确。
我在 WLS 上使用 Windows PowerShell 5.1 和 PowerShell Core 6.0.0-rc.2 进行了测试。
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |