我有一个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