【问题标题】:PowerShell Escape Sequences [duplicate]PowerShell 转义序列 [重复]
【发布时间】:2020-06-20 17:29:48
【问题描述】:

我已经搜索了 PS 的转义规则,但我无法理解为什么有时唯一有效的原因。例如,如果我将字符串参数传递给 cmdlet,似乎所有的赌注都没有了。

PowerShell 'echo "Hello there"'

我希望这会产生以下输出:Hello there,但 PowerShell 完全忽略了双引号,并且无论我使用哪种转义序列,它都拒绝承认它们甚至存在于字符串中。当然,以上只是一个例子。我使用哪个 cmdlet 并不重要,只要传递一个字符串,所有看似平淡无奇的转义规则都不适用。通过 PowerShell 将字符串传递给 Node.JS 也是如此:

node -p 'console.log("Hello")'

这再次引发错误,因为 PowerShell 决定丢弃我的双引号并假装它们不存在。

有趣的是,如果我交换引号,就像这样:

node -p "console.log('Hello')"

它会产生正确的结果,尽管字符串中的任何双引号都会立即破坏它。太奇怪了,escape rules 似乎不适用于 String 参数。我误解了规则吗?有没有办法在 PS 不会完全忽略的单引号字符串参数中使用双引号?

感谢您的任何见解。

【问题讨论】:

标签: string powershell escaping double-quotes single-quotes


【解决方案1】:

此链接包含我使用的大部分规则: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-7

反引号用于抵消变量插值:

"`$var" == $var

在双引号字符串中保留双引号: "As they say, ""live and learn."""

如果你有具体的例子,我们可以深入研究。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 2019-04-08
    • 2015-09-12
    • 2020-03-06
    • 1970-01-01
    • 2014-08-15
    相关资源
    最近更新 更多