我正在製作一個處理預定義數據集的腳本,輸出到一個文件中。當一個數據(在每一組中我都可以訪問的數據總是「Regular」)不同時,我想彈出一個警告,說明這個值是未處理的(因爲我不知道它是如何影響數據的)。我應該將此警告輸出到標準錯誤還是標準輸出?我應該向STDERR還是STDOUT輸出警告?
21
A
回答
27
如果我保存了此腳本的輸出(即僅用於stdout)以便稍後處理它,那麼該警告是否會干擾輸出的解析?而且,如果將輸出傳送到另一個進程,警告應該顯示在終端上,以便用戶立即看到它。
由於這些原因,一般情況下,您會向stderr輸出警告。
1
真正的問題是:如果有人將您的腳本的輸出重定向到一個文件,您想要將警告置於文件中還是導向給用戶?
如果您希望用戶因警告而採取某些操作,則應該轉到STDERR。如果某些下游腳本可能被警告絆倒,它應該轉到STDERR。
4
警告應該發送到stderr。
除了其他人提出的觀點(導致下游流程的解析錯誤和隱藏控制檯用戶的錯誤)之外,還存在一個靈活性問題。
如果用戶不希望來自stderr的警告轉到解析stdout的下游進程,他們不必做任何特殊的事情。
your_script | downstream_process
如果用戶希望從標準錯誤警告去到下游的過程,將解析輸出和錯誤,用戶可以使用2> & 1到stderr重定向到標準輸出。
your_script 2>&1 | downstream_process
如果輸出警告和任何正常的數據到標準輸出,用戶分離數據的警告沒有解析的一切沒有什麼好辦法。 因此,將警告發送到stderr會使腳本具有更大的靈活性。
相關問題
- 1. 重定向stdout和stderr的輸出?
- 2. 我應該向stderr打印警告信息的級別是多少?
- 3. 將STDOUT的PHP通知和警告重定向到STDERR
- 4. 輸出重定向是否按順序寫stdout和stderr信息?
- 5. 將輸出stdout和stderr發送到Logstash
- 6. stdout/stderr元組或字符串輸出
- 7. Python Popen stdout輸出進入stderr
- 8. Cronjob - 如何輸出stdout,並忽略stderr
- 9. Ruby從$ stdout和$ stderr同步輸出
- 10. 爲什麼當我寫入stderr時,我在stdout上看到了STDERR輸出?
- 11. 如何將stdout和stderr重定向到文件AND仍只輸出stderr?
- 12. 我重定向了stdout和stderr,爲什麼我仍然得到一些輸出?
- 13. 重定向PostgreSQL Qt驅動程序stdout/stderr輸出
- 14. PERL無法將stdout和stderr重定向到輸出文件
- 15. Linux stdout stderr重定向到文件:與終端輸出不同
- 16. 既不是STDOUT也不是STDERR的程序輸出?
- 17. 我應該將消息記錄到stderr或stdout嗎?
- 18. dup2,stdout和stderr出錯
- 19. 爲什麼wget輸出到stderr而不是stdout?
- 20. stdin,stdout,stderr在Lua中是緩衝還是非緩衝?
- 21. LLVM stdin/stdout/stderr
- 22. tomcat logging stdout stderr
- 23. 輸出不是STDOUT
- 24. 重定向cmdlet警告/錯誤輸出?
- 25. FindBugs Dead Store Warning - 我應該重組代碼還是忽略警告
- 26. 我應該使用問號類型參數還是抑制rawtypes警告?
- 27. 如何在Java中將子進程stdout/stderr重定向到主進程stdout/stderr?
- 28. 如何使用stdout和stderr io-redirection從程序中獲取理智的錯誤/警告消息輸出?
- 29. 您可以告訴Informix將跟蹤信息輸出到stdout或stderr嗎?
- 30. Tomcat將'stderr'內容重定向到'stdout'
所以它應該去stderr不管?或者你是否打算將STDERR的兩個引用之一作爲STDOUT? – 2009-09-16 05:55:11
我的意思是STDERR。他們是兩種情況,你幾乎必須將它發送到stderr。我能想到的唯一時間就是想讓它進入stdout,如果腳本的輸出是供人使用的(也許你會把輸出發送給某人查看它),並且你可能需要警告輸出時不必記得重定向stderr。 – Martin 2009-09-16 06:05:22