【问题标题】:Linter shows error SC1036 for correct powershell scriptLinter 为正确的 powershell 脚本显示错误 SC1036
【发布时间】:2021-01-21 20:38:25
【问题描述】:

在我的Github project 我的powershell script 中有这个sn-p:

param (
    [string]$f,
    [string]$l 
)

Super-linter 向我展示了 this error:

SC1036: '(' is invalid here. Did you forget to escape it?

但代码本身有效。 我还尝试禁用此 linter 规则,但不幸的是,这不起作用。

【问题讨论】:

  • 看起来 bash linter 将 .ps1 解释为 shell 文件扩展,您可能想将 FILTER_REGEX_EXCLUDE: .*\.ps1 添加到 lint_bash linter 步骤
  • 为什么你的 PowerShell 脚本中有#!/bin/bash shebang?这可能是超级 linter 在您的脚本上运行 shellcheck 而不是 PSScriptAnalyzer 的原因。
  • 哦哇...我会试一试@NathanMills,谢谢
  • @NathanMills - 删除 #!/bin/bash 是成功的关键。感谢您指出。如果你愿意,你可以把它写成答案,所以我可以接受!

标签: powershell github-actions linter super-linter


【解决方案1】:

PowerShell 脚本不应包含 #!/bin/bash 解释器行 (shebang)。此解释器行可能会使 linter 混淆,使其运行 shellcheck(用于 bash/sh 脚本)而不是 PSScriptAnalyzer(powershell linter)。

Linux/Mac 上 PowerShell 的正确解释器行是 #!/usr/bin/env pwsh。 1

【讨论】:

    猜你喜欢
    • 2019-03-31
    • 2012-01-13
    • 2014-03-23
    • 2021-06-25
    • 2013-09-14
    • 2020-02-14
    • 2010-10-19
    • 1970-01-01
    • 2016-06-28
    相关资源
    最近更新 更多