Program sıfır olmayan bir kodla çıkmadığı sürece çıktıyı (stdout ve stderr) bastırmanın en iyi yolu nedir? Düşünüyorum:
quiet_success()
{
file=$(mktemp)
if ! "$@" > "$file" 2>&1; then
cat "$file"
fi
rm -f "$file"
}
Ve koş quiet_success my_long_noisy_script.sh
ama daha iyi bir yol olup olmadığından emin değilim. Bunun diğer insanların yapması gereken bir şey olması gerektiğini hissediyorum.
Bağlam için, bunu cron scriptlerime eklemek istiyorum, böylece başarısız olursa her şeyle e-posta ile gönderiliyorum, ancak yapmazlarsa değil.
Evet, sadece soruya yazdım. Önerinizi uyguladı ve katılıyorum, komut bundan sorumlu olmalı , ama ne yazık ki ...
—
dimo414
Sadece bir sözdizimi notu: komutun etrafında parantez gerekmez.
—
manatwork
sh
sözdizimi olmadığı ve yeniden yönlendirme siparişinizin geriye doğru olduğu için sözde kod yayınladığınızı varsayıyorum (> "$file" 2>&1
daha fazla alıntı yapın ve kullanın).