Quelle est la meilleure façon de supprimer la sortie (stdout et stderr) à moins que le programme ne se termine avec un code différent de zéro? Je pense:
quiet_success()
{
file=$(mktemp)
if ! "$@" > "$file" 2>&1; then
cat "$file"
fi
rm -f "$file"
}
Et courez, quiet_success my_long_noisy_script.sh
mais je ne sais pas s'il y a une meilleure façon. J'ai l'impression que cela doit être quelque chose que d'autres personnes ont dû faire.
Pour le contexte, je cherche à ajouter cela à mes scripts cron afin que je reçoive un e-mail avec tout s'ils échouent, mais pas s'ils ne le font pas.
sh
syntaxe valide , et votre ordre de redirection est à l'envers (faites> "$file" 2>&1
et utilisez plus de guillemets).