SORU
3 Temmuz 2010, CUMARTESİ


yönlendirme bash script içinde dosya kendi günlüğüne stdout fotokopisi

Bir dosya için stdout yönlendirmek için nasıl biliyorum:

exec > foo.log
echo test

bu 'test' foo içine koyacağız günlük dosyası.

Şimdi günlük dosyaya çıktı yönlendirmek VE stdout üzerinde tutmak istiyorum

yani senaryoyu dışarıdan basit yapılabilir:

script | tee foo.log

ama içinden yapmak istiyorum

Denedim

exec | tee foo.log

ama işe yaramadı

CEVAP
4 AĞUSTOS 2010, ÇARŞAMBA


#!/usr/bin/env bash

# Redirect stdout ( > ) into a named pipe ( >() ) running "tee"
exec > >(tee logfile.txt)

# Without this, only stdout would be captured - i.e. your
# log file would not contain any error messages.
# SEE answer by Adam Spiers, which keeps STDERR a seperate stream -
# I did not want to steal from him by simply adding his answer to mine.
exec 2>&1

echo "foo"
echo "bar" >&2

Bu bash, sh olduğunu unutmayın. Sana sh myscript.sh ile komut dosyası çağırmak syntax error near unexpected token '>' çizgisinde bir hata alırsınız.

Eğer sinyal tuzakları ile çalışıyorsanız, eğer bir sinyal oluşur tee -i çıkış kesintileri önlemek için bu seçeneği kullanmak isteyebilirsiniz. (Yorum için JamesThomasMoon1979 için teşekkürler.)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • andony5589

    andony5589

    7 Aralık 2011
  • Dan Gately

    Dan Gately

    13 AĞUSTOS 2006
  • Helen Bradley

    Helen Bradle

    4 Mart 2008