在bash中,如果出现错误,如何才能显示命令的输出?

时间:2016-08-27 19:07:25

标签: linux bash terminal

我有一个构建脚本,在某些时候,我会调用make -j4。不过,我不想每次都看到它的全部输出;除非出现错误。那么,如果它返回非零结果,我如何缓冲make的输出并打印它呢?

2 个答案:

答案 0 :(得分:2)

将输出保存在变量中 - 并在出错时打印

cmdout=$(make -j4 2>&1)
es=$?
if ((es)); then
  echo >&2 "make error es $es: \"$cmdout\""
else
  echo "make success"
fi

答案 1 :(得分:1)

将输出保存到临时文件

tmp=$(mktemp)
make -j4 &> "$tmp"

并且仅在出现错误时显示

if (( $? )) ; then
    cat "$tmp"
fi
rm "$tmp"