ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Here-String 插值报错怎么修?3 步定位常见解析问题

Here-String 插值报错怎么修?3 步定位常见解析问题 Here-String 插值报错怎么修3 步定位常见解析问题【免费下载链接】PowerShellPowerShell for every system!项目地址: https://gitcode.com/GitHub_Trending/po/PowerShellA parse error occurred: The string is missing the terminator: .如果你的 PowerShell 多行字符串经常在这里卡住这篇排障实战带你从报错原文出发按改动量从小到大修掉 Here-String 插值解析报错顺带带走一套可复用的自检清单。报错现场你的脚本大概率会这样挂掉先看两个最常见的翻车姿势对号入座。姿势一定界符没顶格。复制进 Markdown 或模板文件时首尾行被加了缩进或者后面顺手跟了个空格。脚本一执行解析器直接罢工典型报错长这样ParserError: Line | 1 | | ~ | No characters are allowed after a here-string header but before the | end of the line.姿势二结束符前有空格或引号选错。换行符是 Windows 的\r\n结尾行往往带着缩进于是报White space is not allowed before the string terminator.或者你用了单引号 Here-String 却指望$name被展开结果拿到一串死文本没有任何报错变量原样躺在那。为什么会这样根因在定界符契约根因一句话Here-String 的定界符、必须严格顶格第 1 列独占一行引号类型决定插值行为两者没有任何商量余地。你可以把它想象成快递面单封皮和封尾必须贴在最左侧贴歪一格整个包裹拒收里面装什么根本不重要。典型症状触发条件根因No characters are allowed after a here-string header...首行后有空格或文字头部定界符不独占一行White space is not allowed before the string terminator.或前有缩进尾部定界符未顶格变量不展开、无报错单引号 Here-String 里写$var模式是纯文本不插值修复方案按改动量从小到大改首尾两行把定界符挪回第 1 列适用场景报错信息里出现 header 或 terminator 字样脚本本身逻辑没问题。# 错误 后跟了空格结尾行被缩进 $name admin $text hello $name # 正确 与 都顶格独占一行 $name admin $text hello $name 为什么这样写解析器按顶格 独占一行两个条件识别定界符差一个空格都不认。换引号类型让插值行为符合预期适用场景没有报错但$var原样出现在输出里。# 错误单引号 Here-String 不会展开变量 $text value: $name # 正确双引号模式开启插值反引号 $ 可阻止单个变量展开 $text value: $name, literal: $var 为什么这样写是插值字符串$()、$var会被求值$前加反引号可让该处保持字面量。改结构把复杂逻辑挪出字符串适用场景字符串里塞了条件判断或循环想注释说明却发现#只是普通文本。注意Here-String 内的#不会被当成注释它原样留在结果里。# 错误注释行会原样进入输出 $text user: $user # 下一行是端口 port: $port # 正确说明写在字符串外字符串内只留内容 # 下一行是端口 $text user: $user port: $port 为什么这样写插值模式里注释没有特殊地位想留档就放到字符串外面去。验证与自检一条命令先跑一遍把怀疑的文件交给解析器几秒钟出结果$null, $errors [System.Management.Automation.Language.Parser]::ParseFile( script.ps1, [ref]$null, [ref]$null) $errors$errors为空即语法通过。再对照下面清单过一遍☐或位于行首第 1 列后面没有任何字符☐或位于行首第 1 列前面没有任何空格☐ 需要插值用双引号模式纯文本用单引号模式☐ 字符串内没有把#当注释依赖☐ 结尾行不是 Windows 行尾\r\n残留的不可见空白写在最后记住顶格、独占、引号定插值Here-String 解析报错基本就能当场解决。觉得有用就点个收藏踩到别的坑欢迎在留言里贴出你的报错原文。解析报错文案定义src/System.Management.Automation/resources/ParserStrings.resx Here-String 官方测试用例test/powershell/Language/Parser/Parser.Tests.ps1 行延续测试反引号换行语义test/powershell/Language/Parser/LineContinuance.Tests.ps1【免费下载链接】PowerShellPowerShell for every system!项目地址: https://gitcode.com/GitHub_Trending/po/PowerShell创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表