стандартный вывод и ошибка из функций

стандартный вывод и ошибка из функций

Есть ли способ получить стандартный вывод и стандартную ошибку из функций внутри скрипта 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, а только перенаправляете stderrна stdout. Поэтому правильное перенаправление должно быть следующим, чтобы перезаписать файл $LOGS.

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

Или, если вы используете bash, вы можете просто использовать команды следующим образом.

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

Связанный контент