标准输出和函数的错误

有没有办法从bash脚本中的函数获得标准输出和标准错误? 这就是我想用我的脚本完成的“我以为”:

#!/bin/bash LOGS="tmp/sync.log" function1() { echo " " echo "beginning function 1" echo " " for-loop-that-will-run-a-command } function2() { echo " " echo "beginning function 2" echo " " for-loop-that-will-run-a-command } function1 2>&1 "$LOGS" && function2 2>&1 "$LOGS" || cat "$LOGS" | mailx -s "Here are the logs" [email protected] 

布我没有得到任何东西,什么是最高效+优雅的方式来实现这一目标?

您不会将任何内容redirect到$LOGS ,但只能将stderrredirect到stdout 。 所以正确的redirect应该如下覆盖$LOGS文件。

 function1 > "$LOGS" 2>&1 && function2 >> "$LOGS" 2>&1 || 

或者,正如你使用bash ,你可以使用如下命令。

 function1 &> "$LOGS" && function2 &>> "$LOGS" ||