我试图将外部命令的输出捕获为字符串,但Powershell返回的结果始终是一个字符串数组。据我所知,Powershell将输出拆分为换行符(Windows或Unix行结尾)并将结果存储在数组中,但我希望保留这些换行符,因为这是用于svn预提交钩子脚本来检测是否存在已提交的文件具有混合行结尾。
$output = svnlook cat -t $transId -r $repos $filename
此时行结尾已被剥离,$output
是一个字符串数组,每行输出一个。
重定向到文件似乎不起作用,因为这会对行结尾进行标准化。你怎么告诉Powershell不分割命令的输出?
谢谢!
答案 0 :(得分:6)
只需在括号中包含“inner”命令,并在右侧使用-join
运算符和"`n"
。
# Preserve line breaks
$result = (ipconfig) -join "`n";
# Remove line breaks
$result = (ipconfig) -join '';
答案 1 :(得分:6)
将命令输出传递到Out-String
cmdlet:
$output = svnlook cat -t $transId -r $repos $filename | Out-String
答案 2 :(得分:2)
如果您需要它作为单个字符串,您可以将结果转换为[string]
[string]$output = svnlook cat -t $transId -r $repos $filename