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

Dav*_*ert 81 powershell

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

Hel*_*ick 107

help about_quoting_rules

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

'As they say, "live and learn."'
Run Code Online (Sandbox Code Playgroud)

此命令的输出是:

As they say, "live and learn."
Run Code Online (Sandbox Code Playgroud)

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

"As they say, 'live and learn.'"
Run Code Online (Sandbox Code Playgroud)

此命令的输出是:

As they say, 'live and learn.'
Run Code Online (Sandbox Code Playgroud)

若要强制 Windows PowerShell 按字面意思解释双引号,请使用反引号字符。这可以防止 Windows PowerShell 将引号解释为字符串分隔符。例如:

"Use a quotation mark (`") to begin a string."
Run Code Online (Sandbox Code Playgroud)

此命令的输出是:

Use a quotation mark (") to begin a string.
Run Code Online (Sandbox Code Playgroud)

因为单引号字符串的内容是按字面解释的,所以不能使用反引号字符来强制单引号字符串中的字面字符解释。

最新版本的 PowerShell 不支持使用反引号字符来转义单引号字符串中的其他引号。在早期版本的 PowerShell 中,反引号转义字符可用于转义单引号字符串中的双引号字符,如help about_quoting这些版本的 PowerShell 中可用的文档中所述。

  • 只是一个说明,但似乎您无法转义单引号您的最后一个示例无效。也许自您的帖子以来发生了一些变化,因为我也找不到“about_quoting”帮助。运行 powershell v5.1。转义双引号或嵌套不同类型的引号仍然按预期工作。 (3认同)
  • 请注意,单引号是通过在单引号字符串中加倍来转义的,就像在 SQL 中一样。因此,“正如他们所说,‘生活和学习’”输出“正如他们所说,‘生活和学习’”,与第二个示例相同。 (2认同)

Ada*_*and 23

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

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

  • 这可能会让 bash 用户发疯。(`cmd.exe` 转义字符是 `^`) (5认同)
  • 好吧,如果你眯着眼睛,那么它看起来像一个反斜杠。 (4认同)

小智 12

为了赞美这里已经提供的内容,您还应该知道您可以使用引号本身来转义引号(单引号或双引号)。这意味着你可以这样做:

“这是一个“双引号字符串”的例子。”

和这个:

'这次是''单引号''。

这种语法提供的优点很简单:两次输入相同的引号比用反引号转义引号更容易。