除非程序以非零代码退出,否则抑制输出(stdout和stderr)的最佳方法是什么?我在想:
quiet_success()
{
file=$(mktemp)
if ! "$@" > "$file" 2>&1; then
cat "$file"
fi
rm -f "$file"
}
并运行,quiet_success my_long_noisy_script.sh
但我不确定是否有更好的方法。我觉得这必须是其他人需要做的事情。
就上下文而言,我希望将其添加到我的cron脚本中,以便如果它们失败了,我会收到一封包含所有内容的电子邮件,如果没有,则不会。
是的,我只是在问题中输入了它。应用您的建议,我同意,命令应该对此负责,但是but ...
—
dimo414 '22
只是语法上的注意事项:不需要在命令前后加上括号。
—
manatwork 2012年
sh
语法,并且您的重定向顺序是反向的(请> "$file" 2>&1
使用更多引号)。