2015-10-17 74 views
0

這裏是一塊功能我試圖創造,使我的測試速度快:PowerShell的功能outputing意想不到的額外的換行符

function t++ { 
    param($Source, $Input, $Output) 
    ... 
    g++ $Source -o test; 
    .\test.exe 
    Write-Output "===End-Of-Output===" 
} 

但在我的Windows PowerShell ISE輸出當屬:

Hello, World! 
===End-Of-Output=== 
\n 

(最後一行是空的)

我不明白爲什麼它會在輸出結束後輸出額外的換行符。

+2

這是你在殼中觀察到的東西嗎?或者當你輸出到一個文件?如果是這樣,你是如何輸出到一個文件? PowerShell的格式化子系統喜歡在輸出到主機時添加額外的空間(在您的情況下,可能是控制檯) –

+1

我無法複製此內容。你能否確定你沒有離開這個功能,並顯示你是如何調用它的?它被稱爲任何其他功能? – briantist

+0

Aww該死的!我很抱歉,我在Windows PowerShell ISE中測試了這一點。 現在我在實際的PowerShell中測試它,它工作正常。應該進行雙重檢查......但爲什麼PowerShell ISE會以不同的方式輸出它? – VillasV

回答

2

當輸出寫入PowerShell的標準輸出流時,它被Host application拾取 - 主機應用程序可以格式化和操作輸出。

powershell.exe情況下,這將是System.Console,使串輸出,但PowerShell主機應用程序不一定Console爲基礎的。

PowerShell ISE,例如,不使用System.Console,因爲輸出窗格也是您的調試器 - 我假設PowerShell開發團隊發現實現新的輸出機制更容易,而不是延伸Console