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

  • Dion Coulls

    Dion Coulls

    16 AĞUSTOS 2006
  • Excel Video Tutorials

    Excel Video

    6 Aralık 2012
  • Thom Hall

    Thom Hall

    24 Kasım 2006