¿Cuál es la mejor manera de suprimir la salida (stdout y stderr) a menos que el programa salga con un código distinto de cero? Estoy pensando:
quiet_success()
{
file=$(mktemp)
if ! "$@" > "$file" 2>&1; then
cat "$file"
fi
rm -f "$file"
}
Y corro quiet_success my_long_noisy_script.sh
pero no estoy seguro si hay una mejor manera. Siento que esto tiene que ser algo que otras personas han tenido que hacer.
Por contexto, estoy buscando agregar esto a mis scripts cron para que me envíen un correo electrónico con todo si fallan, pero no si no lo hacen.
sh
sintaxis válida y su orden de redireccionamiento es al revés (> "$file" 2>&1
use y use más comillas).