0

为什么我在powershell中运行这个命令时会这样:

 $output = (svn stat) -match '^\?' # which $output is an [object] in this case.

查看变量 $output 时,我在 PowerGUI 脚本编辑器控制台中获得了以下输出:

?       Projects\TestProject\Thisisatest.txt
?       Projects\TestProject\Thisisatest - Copy.txt

但是当我运行这个命令时:

[string] $output = (svn stat) -match '^\?'

我得到这些结果:

?       Projects\TestProject\Thisisatest.txt ?       Projects\TestProject\Thisisatest - Copy.txt

似乎在使用 [string] 时它会执行某种类型的编码,它会删除换行符,我不知道为什么?

更新的user978511 这里是小示例代码和输出

Clear-Host
Set-Location "C:\svn\Development\Projects\TestProjects\build"
$output = (svn stat) -match '^\?'
'$output results'
$output

'$output2 results'
[string] $output2 = (svn stat) -match '^\?'
$output2

输出:

$output results
?       Projects\TestProject\Thisisatest.txt
?       Projects\TestProject\Thisisatest - Copy.txt
$output2 results
?       Projects\TestProject\Thisisatest.txt ?       Projects\TestProject\Thisisatest - Copy.txt

感谢任何可以提供帮助的人。

4

1 回答 1

4

当 PowerShell 将数组转换为单个字符串时,它会将成员转换为字符串并在每个成员之间使用空格连接它们。

$output2 = [string]::join([environment]::newline, $output)会做你想做的。

于 2011-12-23T14:58:34.800 回答