为什么我在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
感谢任何可以提供帮助的人。
答案 0 :(得分:4)
当PowerShell将数组转换为单个字符串时,它会将成员转换为字符串,并将它们与每个字符串之间的空格连接起来。
$output2 = [string]::join([environment]::newline, $output)
会做你想做的事。