string - PowerShell 转义序列
问题描述
我已经搜索了 PS 的逃生规则,但我无法理解为什么有时唯一的工作。例如,如果我将字符串参数传递给 cmdlet,似乎所有的赌注都没有了。
PowerShell 'echo "Hello there"'
我希望这会产生: 的输出Hello there
,但是 PowerShell 完全忽略了双引号,并且无论我使用哪种转义序列,它都拒绝承认它们甚至存在于字符串中。当然,以上只是一个例子。无论我使用哪个 cmdlet,只要传递了一个字符串,所有看似平淡无奇的转义规则都不适用。通过 PowerShell 将字符串传递给 Node.JS 也是如此:
node -p 'console.log("Hello")'
这再次引发错误,因为 PowerShell 决定丢弃我的双引号并假装它们不存在。
有趣的是,如果我交换引号,就像这样:
node -p "console.log('Hello')"
它会产生正确的结果,尽管字符串中的任何双引号都会立即破坏它。太奇怪了,转义规则似乎不适用于字符串参数。我误解了规则吗?有没有办法在 PS 不会完全忽略的单引号字符串参数中使用双引号?
感谢您的任何见解。
解决方案
此链接包含我使用的大部分规则: 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."""
如果你有具体的例子,我们可以深入研究。
推荐阅读
- javascript - 在 Autodesk Forge 中围绕模型旋转相机
- javascript - Date.parse 在 Safari 上返回 NaN
- ios - 为具有多线程支持的 ios 构建 ceres-solver
- windows - 使用批处理文件/CMD 切换窗口焦点
- powershell - 连接到连接代理以检索会话时出现 PSS-Remoting 问题
- r - 用相同列的中位数替换特定列中的 na´s
- database - 作业未在 Oracle 中自动运行
- javascript - Javascript在全局范围简写中声明变量
- javascript - filetype validation before crop image using jQuery
- c++ - 如何获取 OpenSSL BIO_do_connect() 失败原因?