函数的标准输出和错误

函数的标准输出和错误

有没有办法从 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]

但我什么也没得到,实现这一目标的最有效+优雅的方法是什么?

答案1

您没有将任何内容重定向到$LOGS,而只是重定向stderrstdout。因此,正确的重定向应如下所示以覆盖文件$LOGS

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

或者,当您使用时bash,您可以直接使用以下命令。

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

相关内容