考虑以下powershell代码:
@"
"@.GetEnumerator() | %{[int]$_}
在我的计算机上,这输出
13
10
分别是ASCII控制字符的十进制表示,分别用于返回和线条。
Appveyor上执行的相同代码仅一个数字:
10
换句话说,在此处的字符串跨系统中的字符串中使用的字符之间似乎存在差异。我希望源是[System.Environment]::newline
,但是在此字符串中输出单个字符的相同环境环境,输出
13
10
[System.Environment]::newline
。[System.Environment]::newline
似乎不是这里字符串中新线的来源。
powershell脚本本质上是字符串。而且它已经必须使用"`n"
或"`r`n"
进行行分离。因此,如果PowerShell字符串字面交叉多行,则PowerShell Parser将线分离器保留,该线路被用作字符串文字的一部分。
例如:
"'a`nb`r`nc'.GetEnumerator() | %{[int]`$_}" | Set-Content .Test.ps1
.Test.ps1
将打印:
97
10
98
13
10
99