如何传递内部包含 `(backtick), ' 和 " 的 PowerShell 字符串参数?

问题描述 投票:0回答:1

我正在使用 PowerShell 命令执行 Python 脚本,Python 脚本采用一个可能包含特殊字符的字符串。该参数是从 ansible 管道传递的。 ansible主机是Windows机器,因此我们必须使用使用PowerShell的win_shell模块。因此,该解决方案应该是可以应用于任何字符串的通用解决方案。我运行的 PowerShell 版本是 PowerShell 5.1。

python.exe script.py --special_string the"str`in'g --otherparam value

但这会产生错误。 (只是“和”没有被正确跳过)

根据我目前的发现,

  • 在 PowerShell 中 ' 表示文字字符串,“ 可用于添加变量值。
  • 我们使用 ` 作为转义字符,但是 `"strin`'g 给出错误。"the`"strin`'g" 也不起作用。错误是,PowerShell 认为跳过了 "。它要么将命令中的所有剩余内容作为字符串内容,要么以 " 开头关闭已经开始的字符串。
script.py: error: the following arguments are required: --otherparam
  • 不能使用 ' 像 'string"g' 这样用 " 包围字符串。这也会出错。
  • 反引号可以使用双反引号或用单引号引起来进行转义。 (使其成为文字字符串)

最好的方法是什么?

string powershell escaping parameter-passing quoting
1个回答
0
投票

使用双引号封装字符串并转义它们以及反引号里面的反引号

python.exe script.py --special_string "the`"str``in'g"
© www.soinside.com 2019 - 2024. All rights reserved.