powershell:单引号字符串中的换行符?
Posted
技术标签:
【中文标题】powershell:单引号字符串中的换行符?【英文标题】:powershell: newline in a single-quoted string? 【发布时间】:2022-01-12 18:33:34 【问题描述】:在 powershell 中,双引号 "
表示“可扩展”字符串,类似于其他上下文中的“字符串插值”。单引号'
是不进行插值的字符串。
我很喜欢这种区别,因为它可以帮助我预测特定字符串的使用方式。
然而
根据these MS docs,转义序列仅在包含在双引号 (") 字符串中时才会被解释。
这似乎意味着我不能在单引号字符串中添加换行符?
【问题讨论】:
你能在你的问题中添加一些代码吗?你试过什么。 【参考方案1】:确实,PowerShell 的 verbatim strings('...'
,即 single-引用)仅支持 one 转义序列:@ 987654328@,允许您逐字嵌入'
因此,您的选择是:
或者:在'...'
字符串中嵌入逐字(实际)换行符。
或者 - 这适用于您想要以编程方式而不是逐字生成的任何字符 - 使用 字符串连接 (+
) 或通过-f
、format operator
以下示例展示了这些技术:
'--- verbatim'
# Note: If the enclosing script uses Windows-style CRLF newlines,
# so will this string ("`r`n").
'line1
line2'
'--- concatenation'
# Note: In lieu of "`n" you may use [char] 10
# For Windows-style CRLF newlines, use "`r`n" or + [char] 13 + [char] 10
'line1' + "`n" + 'line2'
'--- -f operator:
'line10line2' -f "`n"
如果嵌入 verbatim 换行符是一个选项,您也可以使用 verbatim here-string 以获得更好的可读性,这具有 not 的额外优势em> 必须转义嵌入的 '
字符:
# Here-string
@'
line1
line2
No escaping of ' needed.
'@
与常规逐字字符串一样,封闭脚本的换行符格式(Windows 样式的 CRLF 与 Unix 样式的 LF)决定了字符串中使用的换行符的格式。
【讨论】:
感谢您的确认和前进的道路。在我的情况下,在字符串声明中使用实际的换行符是可行的。如果您链接到的字符串文档包含该方法的示例,那就太好了。我扫描了该页面几次,得出的印象是多行字符串需要使用“这里的字符串”。干杯! 很高兴听到这个消息,@orionelenzil。我同意概念性的about_Quoting_Rules 帮助主题可以使用改进,我鼓励您在github.com/MicrosoftDocs/PowerShell-Docs/issues/new/choose 的 PowerShell 文档 GitHub 存储库中打开一个问题 added。这么大的项目只有 30 个未解决的问题,真是太神奇了!以上是关于powershell:单引号字符串中的换行符?的主要内容,如果未能解决你的问题,请参考以下文章