LINUX.ORG.RU

пайпы в bash


0

1

Подскажите, как направить stderr и stdout программы ./myprog.pl в две другие программы.

если бы надо было в два файла то это было бы так:
./myprog.pl >>myprog.log 2>>myprog.err

А нужно что-то типа:
(синтаксис разумеется неправильный, ибо я не знаю как это сделать,
привожу просто чтобы было понятно что имеется ввиду)
./myprog.pl |./logger1.pl param1 param2 2|./logger2.pl param3 param4

★★★

Если _уже_ используются перловые скрипты, не проще ли сделать это на perl?

anonymous
()
Ответ на: комментарий от vahvarh

Чего тут сложного? Единственный недостаток - именованный канал создавать.

Ну вот ещё такой изврат я изобрёл только что:

(./myprog.pl |./logger1.pl param1 param2) 2>&1 |./logger2.pl param3 param4

Вроде работает.

Teak ★★★★★
()
Ответ на: комментарий от Teak

А вот это действительно кавайно =)

vahvarh ★★★
() автор топика

#!/bin/sh

mkfifo test_err mkfifo test_out

( echo test_stdout; echo test_stderr 1>&2 ) 1>test_out 2>test_err & cat <test_out & cat <test_err

sleep 1

unlink test_err unlink test_out

То есть man mkfifo :)

rymis ★★
()
Ответ на: комментарий от rymis

Я давно интересуюсь, почему некоторые посетители форума любят постить ответы на вопросы, которые выше по треду уже решены? :) Типа "а я тоже знаю, вот" :) Причём обычно с таких случаях решение приводится покривее, так как нормальное уже есть выше. :)

Teak ★★★★★
()
Ответ на: комментарий от kosmonavt

Это такой же гон, как то, что ты уже удалил. :) Подними голову чуть повыше (только осторожно, чтобы не повредить мозг (c)), там уже всё написано. :)

Простите за невольную грубость, просто цитата вспомнилась. :)

Teak ★★★★★
()
Ответ на: комментарий от Teak

Кстати, строго говоря, должно быть так:

(./myprog.pl |./logger1.pl param1 param2 >/dev/null 2>&1) 2>&1 |./logger2.pl param3 param4

Иначе logger2 может словить какую-нибудь бяку от logger1, а не только от myprog.

Teak ★★★★★
()
Ответ на: комментарий от Teak

Да ладно. Я без обид :) Недопонял, что stdout и stderr нужно разнести.

kosmonavt
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.