当前位置: 首页 > 面试题库 >

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

仇迪
2023-03-14
问题内容

我阅读了有关在PowerShell中转义字符串的所有文章,但我仍然没有找到让我满意的解决方案。

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

在bash中,这很好用:

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

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

我想出的是:

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

在PowerShell中是否有一种不太麻烦的方式来做到这一点?我不得不退出会话,以bash运行命令,然后再次启动会话。


问题答案:

不幸的是, PowerShell将带有嵌入式双引号的参数传递给 外部程序的方式 已损坏,需要您 手动 \转义
\"

myprogram ((Get-Content -Raw ~/foo.json) -replace '"', '\"')

请注意,使用Get-Content -Raw,比Get-Content ... | Out-String将整个文件读取为 单个
多行字符串更好,但是请注意,它需要PSv3 +。



 类似资料:
  • 我有一个输入json字符串,其中包含几个已经转义的特殊字符和一些未转义的特殊字符(如en-dash/em-dash)。解析此json字符串(需要解析此字符串以检索对象数组)后,它将具有特殊字符的字符串转换为Unicode值(例如,将短划线字符转换为2013)。我的要求是不要转义任何特殊字符,并保持其他已转义字符不变。简单来说,在解析JSON字符串后,内容不应更改。 请建议一些方法来处理这个问题。

  • 问题内容: 如何在浏览器中显示的JavaScript字符串中包含双引号? 我正在做JavaScript作业,我必须在列表中间加上双引号,如下所示: 问题答案: 使用单引号。 或转义双引号。

  • 我试图想出一个好的解决方案来将字符串转换为json格式,但我不知道它是否足够好。 我想我可能会使用str.replace from(to{,并在}{之间插入逗号,但我如何找到要插入的索引?“”代表Name、Author、fileSize呢?在转换为可读的json字符串之后,我可以序列化为json(由GSON/Jackson)。

  • 问题内容: 我在python中解析json字符串时遇到问题,因为在字符串值中有多余的双引号,例如 我正在尝试将其转换为列表,以便进一步评估,如下所示: 我如何将json字符串更改为this ,以便对其进行正确评估。 编辑 只是为了强调我知道json无效,但这是我所拥有的,并且更改源不是一个选择。我目前正在努力解决此限制。 问题答案: 我怀疑这会工作(在repl.it上的工作示例),它使用以下正则表

  • 问题内容: 这是我的Json代码的示例: 如果我在程序中打印出该属性,则会得到以下输出: 如您所见,它保留了双引号。 有什么办法可以避免这种情况吗? 我的完整代码: java代码将其打印出来: 我的完整Java代码 我的Java程序的输出: 问题答案: 它的文档记录不正确,但是会为您提供一个表示JSON元素的字符串,并且适合于重新创建JSON序列化。你想要的是。如果您不查看字符串,这将引发错误,但

  • 本文向大家介绍PowerShell中字符串使用单引号和双引号的区别,包括了PowerShell中字符串使用单引号和双引号的区别的使用技巧和注意事项,需要的朋友参考一下 本文介绍PowerShell开发时,在字符串中如何去包含变量。将变量包含在字符串中,最后得到的结果是将变量的值放入到了字符串中。 假如有一个字符串变量:$p = "PowerShell" 那么 $str="Hello $p",这时,