ori*_*zil 4 quotes powershell newline escaping single-quotes
在 powershell 中,双引号"表示“可扩展”字符串,类似于其他上下文中的“字符串插值”。单引号'是不经过插值的字符串。
我很喜欢这种区别,因为它可以帮助我预测特定字符串的使用方式。
然而
根据这些 MS 文档,仅当包含在双引号 (") 字符串中时才会解释转义序列。
这似乎意味着我不能在单引号字符串中添加换行符?
事实上,PowerShell 的逐字字符串('...',即单引号)仅支持一种转义序列:'',它允许您嵌入逐字字符串'
因此,您的选择是:
要么:在字符串中嵌入逐字(实际)换行符'...'。
或者 - 这适用于您想要以编程方式生成而不是逐字生成的任何字符 - 使用字符串连接( +)或通过格式运算符的-f模板方法
以下示例展示了这些技术:
'--- 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:
'line1{0}line2' -f "`n"
Run Code Online (Sandbox Code Playgroud)
如果可以选择嵌入逐字换行符,您还可以使用逐字此处字符串以获得更好的可读性,这具有不必转义嵌入'字符的额外优点:
# Here-string
@'
line1
line2
No escaping of ' needed.
'@
Run Code Online (Sandbox Code Playgroud)
与常规逐字字符串一样,封闭脚本的换行符格式(Windows 样式的 CRLF 与 Unix 样式的 LF)决定了字符串中使用的换行符的格式。