Apa cara terbaik untuk menekan output (stdout dan stderr) kecuali program keluar dengan kode bukan nol? Saya berpikir:
quiet_success()
{
file=$(mktemp)
if ! "$@" > "$file" 2>&1; then
cat "$file"
fi
rm -f "$file"
}
Dan jalankan quiet_success my_long_noisy_script.sh
tetapi saya tidak yakin apakah ada cara yang lebih baik. Saya merasa ini harus menjadi sesuatu yang harus dilakukan orang lain.
Untuk konteks, saya ingin menambahkan ini ke skrip cron saya sehingga saya bisa diemail dengan semuanya jika gagal, tetapi tidak jika tidak.
sh
sintaks yang valid , dan urutan pengalihan Anda mundur (lakukan> "$file" 2>&1
dan gunakan lebih banyak kutipan).