Jaki jest najlepszy sposób tłumienia wyjścia (stdout i stderr), chyba że program zakończy działanie z niezerowym kodem? Myślę:
quiet_success()
{
file=$(mktemp)
if ! "$@" > "$file" 2>&1; then
cat "$file"
fi
rm -f "$file"
}
I biegnij, quiet_success my_long_noisy_script.sh
ale nie jestem pewien, czy jest lepszy sposób. Wydaje mi się, że muszą to zrobić inni ludzie.
Dla kontekstu, chcę dodać to do moich skryptów cron, aby otrzymać e-mailem wszystko, jeśli się nie powiedzie, ale nie, jeśli nie.
sh
składnią, a twoje polecenie przekierowania jest odwrócone (wykonaj> "$file" 2>&1
i użyj więcej cudzysłowów).