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

Есть ли способ получить стандартный вывод и стандартную ошибку из функций внутри сценария 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" myemail@domain.com

Но я ничего не получаю, каков наиболее эффективный и элегантный способ добиться этого?

1
задан 18 January 2017 в 19:41
1 ответ

Nu redirecționați nimic către $ LOGS , ci redirecționați numai stderr către stdout . Deci, redirecționarea corectă ar trebui să fie următoarea pentru a suprascrie fișierul $ LOGS .

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

Sau, așa cum utilizați bash , puteți utiliza comenzile după cum urmează.

function1 &> "$LOGS" &&
function2 &>> "$LOGS" ||
4
ответ дан 3 December 2019 в 17:35

Теги

Похожие вопросы