我看过我认为所有有关在PowerShell中转义字符串的文章,但是我仍然没有找到让我满意的解决方案。
假设我有一个包含JSON字符串的文件foo.json
。我需要将JSON字符串作为参数传递给程序。
在bash中,它可以正常工作:
myprogram "$(cat ~/foo.json)"
在PowerShell中,当我正常读取文件内容并将其传递时,接收程序会抱怨键和值周围没有引号。
我想出的是:
$json = (get-content ~/foo.json | Out-String) -replace '"','""'
myprogram $json
在PowerShell中是否有一种不太尴尬的方法?我不得不退出会话,以bash运行命令,然后再次启动会话。
答案 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中了解有关此问题的更多信息。