首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Write-Host在重定向到文件时导致空行

Write-Host在重定向到文件时导致空行
EN

Stack Overflow用户
提问于 2021-03-04 23:39:31
回答 1查看 102关注 0票数 1

代码片段

代码语言:javascript
复制
powershell { Write-Host "a"; Write-Host "b" } > test.txt; Write-Host "File contents:"; cat test.txt; rm test.txt

打印

代码语言:javascript
复制
a
b
File contents:
a


b

为什么文本文件中的每个Write-Host调用后都有两个空行?

更令人困惑的是,当我们将所有流重定向到一个文件时的行为:

代码语言:javascript
复制
powershell { Write-Host "a"; Write-Host "b" } *> test.txt; Write-Host "File contents:"; cat test.txt; rm test.txt

打印

代码语言:javascript
复制
File contents:
a


b


a
b

现在这个文件包含了两次所有内容,第一次是两个空白行,然后是正常的。为什么这个文件现在包含了两次所有内容?

EN

回答 1

Stack Overflow用户

发布于 2021-03-05 05:45:49

您的脚本执行以下操作:

写入-主机"a"a[CR][LF]写入stdout。然后,powershell出于某种原因*将[LF]添加到其中,并将其作为元素存储在返回列表中。当它打印返回列表时,它将每个元素打印为[$value.toString()][CR][LF]

结果是Write-Host "a"在输出中变成了a[CR][LF][LF][CR][LF]

*需要调查。可能是if value from stdout and ends with [CR][LF]__。同样,stdout在powershell中不应该作为管道工作,因为powershell有它自己的对象管道。

Powershell的Write-Host不是用来捕获输出的。取而代之的是Write-Output命令或return

除了Tee-Object之外,没有很好的内置命令可以将数据同时输出到文件和标准输出,但是这做了一些不同的事情。

您应该避免将powershell的stdout输出用作其他命令的stdin,因为它可能包含您不期望的better-look enchancementstruncated partsline wraps。如果无法避免,请使用Write-Output,并使用[void].. | Out-Null使任何可能的输出无效。来自任何操作(如new-item)的所有未处理的返回都将传递给stdout

代码语言:javascript
复制
powershell {Write-Output "a" ;Write-Output "b"} > test.txt; Write-Host "File contents:"; cat test.txt; 
powershell {Write-Output "a" ;Write-Output "b"} | Out-File 'test.txt' ; Write-Host "File contents:"; cat test.txt; 
powershell { @('A';'B') | Out-File 'test.txt' } ; Write-Host "File contents:"; cat test.txt; 
powershell { @('A';'B') | Tee-Object -FilePath 'test.txt' | % { Write-Host "+ $_" } } | Out-Null ; Write-Host "File contents:"; cat test.txt; 
powershell {Write-Host "a" -NoNewline;Write-Host "b" -NoNewline} > test.txt; Write-Host "File contents:"; cat test.txt; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66478292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档