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

  • Phlearn Photoshop and Photography Tutorials

    Phlearn Phot

    11 EKİM 2011
  • picster

    picster

    20 NİSAN 2006
  • RealPapaPit

    RealPapaPit

    16 Mart 2009