Standardausgabe und Fehler von Funktionen

Standardausgabe und Fehler von Funktionen

Gibt es eine Möglichkeit, die Standardausgabe und den Standardfehler aus den Funktionen innerhalb eines Bash-Skripts abzurufen? Dies ist, was ich „dachte“, was ich mit meinem Skript erreichen wollte:

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

Aber ich bekomme nichts hin. Was ist der effizienteste und eleganteste Weg, dies zu erreichen?

Antwort1

Sie leiten nichts zu um $LOGS, sondern nur zu stderr. stdoutDie korrekte Umleitung zum Überschreiben der Datei sollte also wie folgt lauten $LOGS.

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

Oder verwenden Sie, wie bei bash, einfach die folgenden Befehle.

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

verwandte Informationen