函數的 std 輸出和錯誤

函數的 std 輸出和錯誤

有沒有辦法從 bash 腳本內的函數取得標準輸出和 estandard 錯誤?這就是「我認為」我試圖用我的腳本實現的目標:

#!/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" ||

相關內容