関数からのstd出力とエラー

関数からのstd出力とエラー

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" ||

関連情報