【发布时间】: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 不会完全忽略的单引号字符串参数中使用双引号?
感谢您的任何见解。
【问题讨论】:
-
简而言之:可悲的是,嵌入了
"字符。必须手动被\-转义才能传递给外部程序 - 请参阅the linked answer。
标签: string powershell escaping double-quotes single-quotes