SORU
24 Kasım 2008, PAZARTESİ


Nasıl komut dosyası içinde tüm kabuk bir komut çıktısını yönlendirmek kendisi?

Script içinde shell komutları ile bir yere kadar, ama Bourne kabuk komut çıktısı tüm yönlendirmek olasıdır.

Tek bir komut çıktısını yönlendirmek kolaydır, ama daha çok şöyle bir şey istiyorum:

#!/bin/sh
if [ ! -t 0 ]; then
    # redirect all of my output to a file here
fi

# rest of script...

Anlamı: eğer senaryoyu olmayan etkileşimli olarak (örneğin, cron) çalışması ise, bir dosya için her şeyin çıkış kaydedin. Eğer bir kabuk etkileşimli olarak çalıştırmak, çıktı, her zamanki gibi stdout gidelim.

Bir script normalde FreeBSD dönemsel yardımcı programı çalıştırmak için bunu yapmak istiyorum. Normalde gönderdi zorunda kalmayayım e-posta her gün görmek umurumda değil günlük çalışma, bir parçası. Bu içinde bir şey ancak belirli bir komut başarısız olur, benim için önemli olan ve günlük işlerin bir kısmı çıkış yakalamak e-posta için mümkün olmak istiyorum.

Güncelleme: Joshua cevap böyle yapılır:-nokta, ama aynı zamanda ve stdout kaydetmek ve tüm senaryoyu stderr etrafında istedi

# save stdout and stderr to file descriptors 3 and 4, then redirect them to "foo"
exec 3>&1 4>&2 >foo 2>&1

# ...

# restore stdout and stderr
exec 1>&3 2>&4

CEVAP
24 Kasım 2008, PAZARTESİ


Bir dosya için stdout gönderin

exec > file

stderr

exec > file                                                                      
exec 2>&1

hem stdout ve stderr dosyasına Ekle

exec >> file
exec 2>&1

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chaoticmoogle

    Chaoticmoogl

    13 ŞUBAT 2006
  • Dan Gately

    Dan Gately

    13 AĞUSTOS 2006
  • Virtual Riot

    Virtual Riot

    19 Mayıs 2011