2013-04-16 2 views
0

У меня есть труба, как это:Как труба (в Баше) стандартный вывод переменного, и STDERR команды

VAR=`command1 | command2 | etc...` 

И я хотел бы, что, если труба заканчивается успешно, выход сохранен в VAR, и в противном случае, если труба выходит из строя в любой точке трубы, ошибка передается команде. Эта команда записывает затем ошибки с определенным форматом в некоторый файл. Нечто подобное (но это не работает):

VAR=`{ command1 | command2 | etc... ; } 2> err_command` 

Я пробовал другие комбинации:

|& err_command 
2>&1 | err_command 

Но они не работают, и я не знаю, почему.

ответ

3

Попробуйте использовать замену процесса.

VAR=`{ command1 | command2 | etc... ; } 2> >(err_command)` 
+0

Работает отлично. Я бы поклялся, что я пробовал это раньше: «Хе-хе. Спасибо. –

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