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.shaber 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.
shSyntax ist und Ihre Umleitungsreihenfolge rückwärts ist (> "$file" 2>&1verwenden Sie mehr Anführungszeichen).