Wie kann die Ausgabe (stdout und stderr) am besten unterdrückt werden, wenn das Programm nicht mit einem Code ungleich Null beendet wird? Ich denke:
quiet_success()
{
file=$(mktemp)
if ! "$@" > "$file" 2>&1; then
cat "$file"
fi
rm -f "$file"
}
Und renn, quiet_success my_long_noisy_script.sh
aber ich bin mir nicht sicher, ob es einen besseren Weg gibt. Ich habe das Gefühl, dass dies etwas sein muss, was andere Leute tun müssen.
Im Kontext möchte ich dies zu meinen Cron-Skripten hinzufügen, damit mir alles per E-Mail geschickt wird, wenn sie fehlschlagen, aber nicht, wenn sie es nicht tun.
sh
Syntax ist und Ihre Umleitungsreihenfolge rückwärts ist (> "$file" 2>&1
verwenden Sie mehr Anführungszeichen).