PowerShell:避免传递给外部程序的字符串中的双引号转义的最佳方法?例如JSON字符串

时间:2018-10-15 18:47:24

标签: json powershell

我看过我认为所有有关在PowerShell中转义字符串的文章,但是我仍然没有找到让我满意的解决方案。

假设我有一个包含JSON字符串的文件foo.json。我需要将JSON字符串作为参数传递给程序。

在bash中,它可以正常工作:

myprogram "$(cat ~/foo.json)"

在PowerShell中,当我正常读取文件内容并将其传递时,接收程序会抱怨键和值周围没有引号。

我想出的是:

$json = (get-content ~/foo.json | Out-String) -replace '"','""' myprogram $json

在PowerShell中是否有一种不太尴尬的方法?我不得不退出会话,以bash运行命令,然后再次启动会话。

1 个答案:

答案 0 :(得分:2)

不幸的是, PowerShell将带有嵌入式双引号的参数传递给外部程序的操作已损坏,需要您 手动 {{1 }}转义myMiddlewareFunction((req, res, next) => { const app = req.app; initComponents(app.locals.componentData); // some other logic })

\

请注意使用\",它比myprogram ((Get-Content -Raw ~/foo.json) -replace '"', '\"') 更适合将整个文件读取为多行字符串,但请注意需要PSv3 +。

您可以在this GitHub docs issue中了解有关此问题的更多信息。