2016-12-29 3 views
1

Я хочу перенаправить свой вывод на stderr. У меня есть хронПеренаправление вывода в stderr

function auth_tester { 
    cd /data/$1/current && bundle exec rake 'authentication:tester' 1> /dev/null 
} 

который называет задачу Rake

namespace :authentication do 

    desc "Automatically runs authentication tester and notifies in case of failure" 
    task :tester => :environment do 
    auth_tester_results = AuthenticationTester.perform 

    exit(auth_tester_results.success? ? 0 : 1) 
    end 
end 

Если булево-х auth_tester_results "является ложным, я хочу перенаправить вывод в Stderr. Как это можно сделать?

ответ

3

Поскольку вы уже имеем дело с оболочкой, сделать это в оболочке:

function auth_tester { 
    cd /data/$1/current && \ 
    bundle exec rake 'authentication:tester' >/dev/null 2>&1 
    #         HERE: ⇑⇑⇑⇑⇑⇑⇑⇑⇑⇑⇑⇑⇑⇑⇑ 
} 

stderr имеет id = 2, и мы перенаправляют stdout к /dev/null и stderr к stdout, в конечном счете, перенаправляя его на /dev/null.

Перенаправление stdout к stderr, используйте обратное:

1>&2 

Чтобы перенаправить вывод из рубина, один использует надлежащий приемник с IO#puts:

$stderr.puts "Goes to stderr" 
+0

Мой вопрос заключается в том, как будет перенаправлять мой выход неисправности к stderr. Ваш ответ также полезен в том, как перенаправить stderr на stdout. Но, пожалуйста, ответьте, как перенаправить мой выход сбоя на stderr – krishna

+0

См. Обновление. – mudasobwa

 Смежные вопросы

  • Нет связанных вопросов^_^