我试图捕获运行外部命令的输出作为字符串,但Powershell返回的结果始终是一个字符串数组.据我所知,Powershell将输出拆分为换行符(Windows或Unix行结尾)并将结果存储在数组中,但我希望保留这些换行符,因为这是用于svn预提交钩子脚本来检测是否存在已提交的文件具有混合行结尾.
$output = svnlook cat -t $transId -r $repos $filename
Run Code Online (Sandbox Code Playgroud)
此时,行结束已被剥离,并且$output是一个字符串数组,每行输出一个.
重定向到文件似乎不起作用,因为这标准化了行结尾.你怎么告诉Powershell不分割命令的输出?
谢谢!
只需将"inner"命令括在括号中,然后在右侧使用-join运算符"`n".
# Preserve line breaks
$result = (ipconfig) -join "`n";
# Remove line breaks
$result = (ipconfig) -join '';
Run Code Online (Sandbox Code Playgroud)
将命令输出Out-String传递到cmdlet:
$output = svnlook cat -t $transId -r $repos $filename | Out-String
Run Code Online (Sandbox Code Playgroud)
如果您需要将其作为单个字符串,则可以将结果转换为 [string]
[string]$output = svnlook cat -t $transId -r $repos $filename
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7985 次 |
| 最近记录: |