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

#1 楼

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中,可以使用反引号转义字符来对单引号引起来的双引号字符进行转义,如在这些版本的PowerShell中可用的help about_quoting文档中所述。

评论


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

–卡尔·泽克多(Kal Zekdor)
17年6月2日在18:04

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

– Helvick
17年5月5日在6:38

请注意,如在SQL中一样,通过在单引号引起来的字符串中加倍将单引号转义。因此,“就像他们说的那样,“生活和学习”。

–brianary
17年12月21日在16:12

#2 楼

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

评论


这可能会使bash用户发疯。 (cmd.exe的转义字符为^)

–user1686
09年7月30日在9:39

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

–koenigdmj
09年7月31日在4:38

#3 楼

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

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

以及:

'这次是“单引号”。'

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

#4 楼

单个“文本”,因此将其视为文字文本,然后使用“ \”

转义任何特殊字符,例如此字符串:“正如他们所说的那样,“生活和学习。””
变成这样的字符串“如他们所说的“ \”生活和学习。\“'

评论


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

–HopelessN00b
18年4月3日在18:38

@ HopelessN00b也许让我们不要过于苛刻-如果您使用PowerShell.exe -Command并尝试在参数中传递双引号(从技术上讲,它是CMD的转义符,但在command参数中有效),则此方法有效。 imgur.com/1btjoQW

– jparnell8839
18年11月20日在18:14