我有一段代碼通過ssh執行命令。該命令是比較少這樣的:如何重定向錯誤輸出並仍然能夠在標準輸出上發出錯誤通知?
(cd /home/some/path && ./program) || echo 'error'
由於這一點,如果執行失敗,我得到在標準輸出「錯誤」,可以把它解釋爲在我最初的代碼失敗。但是,在這種方法中,我放棄了錯誤輸出(因爲我通過ssh連接調用程序)。我希望能夠將錯誤輸出保存到某個錯誤日誌文件中(如果我可以使用awk以某種日期和時間對其進行註釋,那麼這將是完美的),並且在調用時仍然能夠在輸出中獲得「錯誤」失敗。
我想出了這樣的:
(cd /home/some/path && ./program 2>&1 | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; }' > error.log) || echo 'error'
它保存錯誤輸出到error.log文件,但是,我沒有得到的「錯誤」的消息。
任何想法如何解決這個問題?
也許你應該看看'tee'。 – 2013-02-27 14:44:16
當你說你「失去了錯誤輸出」,你的意思是輸出到stderr沒有遇到SSH連接? – 2013-02-27 14:46:33