powershell 和 perl one liners 中的引号 [duplicate]

Quotes in powershell and perl one liners [duplicate]

提问人:ajith.mk 提问时间:7/26/2018 更新时间:7/26/2018 访问量:172

问:

powershell 中的报价规则到底是什么?单引号可以包含文字双引号。右?

PS C:\Users> '"Hello world"'
"Hello world"
PS C:\Users> perl -e 'print \"Heloo World\n\"'
Heloo World
PS C:\Users> perl -e 'print "Heloo World\n"'
PS C:\Users>

看?即使在用单引号括起来的命令之后,我也需要转义这些双引号。发生了什么事情?

Perl PowerShell 行情

评论

1赞 7/26/2018
只有一个 Windows perl 版本,我认为 perl 本身处理参数的方式不同,因为在 cmd 下工作时存在限制.exe其中单引号没有特殊含义
0赞 ajith.mk 7/26/2018
找到这个链接。似乎 perl on windows 有自己的怪癖。
0赞 7/26/2018
我更愿意称它为设计决策,让它在Windows下工作,在你甚至做梦都想不到powershell的时候做出。

答:

0赞 Henrik Stanley Mortensen 7/26/2018 #1

Microsoft 有一个关于单引号与双引号的完整页面

主要结论是:
1.带单引号的字符串可以包含双引号。
2. 带双引号的字符串可以包含单引号
3.带有单引号的字符串将采用变量之类的东西,并将它们作为文本传递,而不是作为变量传递。

因此,我们设置了一个字符串

$string = "this is me"

并尝试用双引号打印它:

write-host "who is this? $string"

who is this? this is me

如果我们现在尝试使用单引号:

write-host 'who is this? $string'

who is this? $string

评论

0赞 7/26/2018
@TobyU发布了一个非常相似的答案,同时由于与问题无关而因反对票而被删除。我想知道你为什么得到赞成票。
0赞 Henrik Stanley Mortensen 7/26/2018
好吧,问题从字面上看是从“PowerShell 中的报价规则到底是什么?这是我试图提供答案的一个问题。如果 OP 不想回答这个问题,最好对问题进行编辑,这样它就省略了发布该问题:)
0赞 7/26/2018
这完全是 TobyUs 回答评论,忽略了问题标题和示例。通过 10k 分数后,您会看到已删除的答案/问题。