Qual é a melhor maneira de suprimir a saída (stdout e stderr), a menos que o programa saia com um código diferente de zero? Estou pensando:
quiet_success()
{
file=$(mktemp)
if ! "$@" > "$file" 2>&1; then
cat "$file"
fi
rm -f "$file"
}
E corra, quiet_success my_long_noisy_script.sh
mas não tenho certeza se há uma maneira melhor. Eu sinto que isso tem que ser algo que outras pessoas precisam fazer.
Por contexto, pretendo adicionar isso aos meus scripts cron para que eu receba um e-mail com tudo se eles falharem, mas não se não o fizerem.
sh
sintaxe válida e seu pedido de redirecionamento é inverso (faça> "$file" 2>&1
e use mais aspas).