温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Powershell Here String 中换行在不同版本中的行为表现

发布时间:2020-06-22 01:33:02 来源:网络 阅读:3631 作者:yoke88 栏目:开发技术

说明

遇到一个powershell Here string 中的换行导致的坑,这里来验证下不同版本中powershell here string 的行为。如果你不有心注意,很可能踩坑。

PS1 中的here string 表现
  • 不能使用空的here string ,否则你会发现在console 中敲入多次回车,这个here string 都闭合不了。
  • 如果here string 中有换行,换行会被吃掉。
    Powershell Here String 中换行在不同版本中的行为表现
PS2 中的here string 表现
  • 可以使用空的here string
  • 如果here string 中有换行,换行会被吃掉。

Powershell Here String 中换行在不同版本中的行为表现

PS3 中的here string 表现

同PS2,验证方法同PS2

PS4 中的here string 表现

同PS2,验证方法同PS2

PS5 中的here string 表现
  • 可以使用空的here string
  • 如果here string 中有换行,换行会被保留。
  • 换行符是\n ,而不是\r\n 也就是CRLF,这点在特定情况下影响很大(比如http Post 的数据的换行符明确要求是CRLF,少个\r ,你可能post 会出错的。)

Powershell Here String 中换行在不同版本中的行为表现

总结

  • 如果要在powershell here string 中保留换行,那么显示的方式是直接写成下面
$a=@"
`r`n
aa
"

但是你会发现,powershell 在多个版本中会给你再多加一个\n

PS C:\> $a=@"
>> `r`n
>> aa
>> "@
>>
PS C:\> $a.length
5
  • 终极解决办法,显式统一换行符为某一种
PS C:\> $a=@"
>> `r`n
>> aa
>> "@
>>
PS C:\> $a.legnth
PS C:\> $a.length
5
PS C:\> $b=$a -replace '(\r\n|\r|\n)',"`r`n"
PS C:\> $b.length
6
PS C:\> $b

aa
PS C:\>
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI