我有一個foobar
命令,始終是冗長和我想顯示其輸出(stdout和stderr),以僅當foobar的退出代碼是錯誤代碼控制檯。如何使用shell管道基礎上,退出代碼有條件地顯示輸出?
我想要實現這個而不輸出保存到臨時文件。我已經知道該解決方法,但我不想生成新文件。
這暗示這樣的解決方案的缺點是,只有當foobar的結束整個輸出可以看出,因爲只有那麼我們就會知道,如果它是成功還是失敗。
我有一個foobar
命令,始終是冗長和我想顯示其輸出(stdout和stderr),以僅當foobar的退出代碼是錯誤代碼控制檯。如何使用shell管道基礎上,退出代碼有條件地顯示輸出?
我想要實現這個而不輸出保存到臨時文件。我已經知道該解決方法,但我不想生成新文件。
這暗示這樣的解決方案的缺點是,只有當foobar的結束整個輸出可以看出,因爲只有那麼我們就會知道,如果它是成功還是失敗。
你可以試試只是將輸出保存在一個變量中。一個簡單的一行將是:
r=$(foobar 2>&1) || echo "$r"
你可能想的chronic
實用程序:
慢性運行一個命令,並安排它的標準輸出和標準錯誤如果命令失敗,只顯示(非零退出或崩潰)。如果命令成功,則任何無關的輸出都將被隱藏。
可用性:
apt-get install moreutils
在Debian/Ubuntu的brew install moreutils
在MacOS(OSX)yum install moreutils
在RHEL(EPEL)/ Fedora的/ CentOS的
你能給一個代碼示例嗎? – 123
也有你不能使用文件的原因嗎? – 123
這不是一種解決方法;這是你必須做的。 shell不會以任何其他方式緩衝輸出。 – chepner