PowerShell转义序列[重复]

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

我已经仔细检查了PS的逃生规则,但是我无法确定为什么有时只有这种方法有效。例如,如果我将String参数传递给cmdlet,则似乎所有选择均已关闭。

PowerShell 'echo "Hello there"'

我希望它产生的输出为:Hello there,但是PowerShell完全忽略了双引号,无论我使用哪种转义序列,它都拒绝承认它们甚至存在于字符串中。当然,以上仅是示例。我使用哪个cmdlet都没有关系,每当传递String时,所有看似平坦的转义规则都不适用。通过PowerShell将字符串传递到Node.JS的过程也是如此:

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

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

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

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

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

感谢您的见解。

string powershell escaping double-quotes single-quotes
1个回答
0
投票

此链接包含我使用的大多数规则: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."""

如果您有特定的示例,我们可以进行深入研究。

© www.soinside.com 2019 - 2024. All rights reserved.