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 "pensei" que estava tentando realizar com 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]
Mas não estou conseguindo nada, qual a maneira mais eficiente + elegante de conseguir isso?
Responder1
Você não redireciona nada para $LOGS
, mas apenas redireciona stderr
para stdout
. Portanto o redirecionamento correto deve ser o seguinte para sobrescrever o $LOGS
arquivo.
function1 > "$LOGS" 2>&1 &&
function2 >> "$LOGS" 2>&1 ||
Ou, como você está usando bash
, você pode simplesmente usar os comandos da seguinte maneira.
function1 &> "$LOGS" &&
function2 &>> "$LOGS" ||