在查看this post之后我试图逃避引号,但做反斜杠并不会逃避这样的html引号:”
< - 注意它是一个正确的双引号而不是正常的{{1 }}
E.g:
正常工作:
"
不起作用:
powershell -noexit -command $str = \"hello '123' world\"; write-host $str
我怎么能逃避这个?或者更好的我如何一次性逃脱所有角色以摆脱这种麻烦!
答案 0 :(得分:10)
使用反引号`来逃避特殊的双引号,所以:
powershell -noexit -command $str = \"hello '123'” world\"; write-host $str
成为这个:
powershell -noexit -command $str = \"hello '123'`” world\"; write-host $str
修改强>
选项1。如果您更喜欢使用here-strings,则可以将上述内容更改为powershell -file
并运行您的powershell脚本文件。尽可能多地使用here-strings。
选项2。如果您不想在调用/处理应用程序/脚本中处理特殊引号字符,则可以切换到使用单引号。在这种情况下,你只需要通过将它们加倍来逃避单引号,如下所示:
powershell -noexit -command $str = 'hello ''123''” world'; write-host $str
请注意,我没有对你的双引号字符做任何事情,它的工作正常。
因此,您的字符串替换代码可能会更容易阅读和维护,特别是如果编辑器没有正确显示此字符(如Powershell控制台那样 - 它会显示常规的双引号)。
答案 1 :(得分:1)
通过在两边用4次引号包围文本来识别字符串:“”“”text“”“”
示例:
powershell.exe -command """""Recognized as string """""
Output Stream:> Recognized as string
对于子表达式中的引号,引号加倍,即8次引号
示例:
powershell.exe -command """""""""How to quote in subexpression"""""""""
Output Stream:> "How to quote in subexpression"
答案 2 :(得分:0)
从命令提示符运行(实际上在PowerShell中):
powershell -noexit -command { $str = "hello '123' world"; write-host $str }
产生
hello '123' world
这可以满足您的需求吗?
答案 3 :(得分:0)
我也遇到过同样的问题,发现使用Powershell 6.x(Core)可以做到这一点:
pwsh -command write-host "`u{22}quoted`u{22}"
输出:
"quoted"