Powershell中的字面转义字符是什么?


51

在Powershell中用引号引起来的字符串中包含文字引号时,如何转义引号字符以表示它是文字而不是字符串分隔符?

Answers:


75

help about_quoting_rules

要使双引号出现在字符串中,请将整个字符串用单引号引起来。例如:

'As they say, "live and learn."'

该命令的输出为:

As they say, "live and learn."

您也可以将单引号字符串括在双引号字符串中。例如:

"As they say, 'live and learn.'"

该命令的输出为:

As they say, 'live and learn.'

若要强制Windows PowerShell从字面上解释双引号,请使用反引号字符。这样可以防止Windows PowerShell将引号解释为字符串定界符。例如:

"Use a quotation mark (`") to begin a string."

该命令的输出为:

Use a quotation mark (") to begin a string.

由于单引号字符串的内容是按字面解释的,因此您不能使用反引号字符强制对单引号字符串进行字面字符解释。

在最新版本的PowerShell中,不支持使用反引号字符将单引号引起来的其他引号引起来。在早期版本的PowerShell中,可以使用反引号转义字符来对单引号引起来的双引号字符进行转义,如help about_quoting这些版本的PowerShell中提供的文档中所述。


2
只是一个注释,但似乎好像无法转义单引号您的最后一个示例无效。自从您发表文章以来,也许有些事情发生了变化,因为我也找不到任何about_quoting帮助。运行powershell v5.1。转义双引号或嵌套不同类型的引号仍然可以正常工作。
Kal Zekdor

1
有趣的是-支持转义单引号似乎是一个错误。about_quoting帮助文件已由about_quoting_rules代替,它清楚地表明您不能在PowerShell v5中使用反引号转义单引号,因为单引号字符串是文字。不错,这在V3中有所不同。
赫尔维克

1
请注意,如在SQL中一样,通过在单引号字符串中加倍将单引号转义。因此'As they say, ''live and learn.'''输出As they say, 'live and learn.'与第二个示例相同。
brianary

13

Powershell中的转义字符是“`”(向后撇号/重音)。

这可以用于转义引号和特殊字符(例如,制表符为`t)。


2
这可能会使bash用户发疯。(cmd.exe逃脱角色是^
grawity

2
好吧,如果您斜视,那么它看起来就像一个反斜杠。
koenigdmj,2009年

10

为了补充此处已提供的内容,您还应该知道可以使用引号本身对引号(单引号或双引号)进行转义。这意味着您可以执行以下操作:

“这是“双引号字符串”的示例。”

和这个:

这次是“单引号”。

这种语法提供的优点很简单:两次输入相同的引号比使用引号引起来的引号要容易得多。


1

单个“文本”,因此将其视为文字文本,然后使用“ \”转义任何特殊字符

例如,该字符串:“如他们所说,“生活和学习。””变为此字符串“如他们所说的,“生活和学习。””


1
不在PowerShell中,事实并非如此。PS C:\ WINDOWS \ system32>写入主机'正如他们所说的“生活和学习。” –正如他们所说的“生活和学习”
。– HopelessN00b

1
@ HopelessN00b也许让我们不要过于苛刻-如果您正在使用PowerShell.exe -Command并尝试在参数中传递双引号(例如,从技术上讲,它是CMD的转义符,但在命令参数中有效),则此方法很有用。imgur.com/1btjoQW
jparnell8839 '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.