std saída e erro de funções

1

Existe uma maneira de obter a saída padrão e o erro padrão das funções dentro de um script bash? Isso é o que "eu pensei" que eu estava tentando realizar com o meu script:

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

Bu Eu não estou recebendo nada, qual é a maneira mais eficiente + elegante para conseguir isso?

    
por user3311890 18.01.2017 / 18:41

1 resposta

4

Você não redireciona nada para $LOGS , mas apenas redireciona stderr para stdout . Portanto, o redirecionamento correto deve ser o seguinte para substituir o arquivo $LOGS .

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

Ou, como você está usando bash , pode usar os comandos da seguinte forma.

function1 &> "$LOGS" &&
function2 &>> "$LOGS" ||
    
por 18.01.2017 / 19:07