Qual è il modo migliore per sopprimere l'output (stdout e stderr) a meno che il programma non esca con un codice diverso da zero? Sto pensando:
quiet_success()
{
file=$(mktemp)
if ! "$@" > "$file" 2>&1; then
cat "$file"
fi
rm -f "$file"
}
E corri quiet_success my_long_noisy_script.sh
ma non sono sicuro che ci sia un modo migliore. Sento che questo deve essere qualcosa che altre persone hanno dovuto fare.
Per il contesto, sto cercando di aggiungere questo ai miei script cron in modo da ricevere un'email con tutto se falliscono, ma non se non lo fanno.
sh
sintassi valida e il tuo ordine di reindirizzamento è al contrario (fai> "$file" 2>&1
e usa più virgolette).