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:单引号字符串中的换行符?的主要内容,如果未能解决你的问题,请参考以下文章

shell 字符串

PHP - 将换行符“\n”作为单引号字符串回显

第三章 Python数据类型

当内容在单引号中时,使用 PowerShell 将 SQL 文件/字符串拆分为批处理排除拆分

python的字符串处理函数

ES6中的模板字符串---反引号``