要做到正确,您需要在将其重新映射到/ dev / null之前将原始FD 1复制到其他位置.在这种情况下,我在FD 5上存储备份:
exec 5>&1 >/dev/null ... exec 1>&5
另一种选择是在块中重定向stdout而不是使用exec:
{ ... } >/dev/null
exec 5>&1 >/dev/null ... exec 1>&5
另一种选择是在块中重定向stdout而不是使用exec:
{ ... } >/dev/null