Поймать STDOUT и STDERR с помощью каналов для следующей команды в качестве отдельных аргументов? - PullRequest
0 голосов
/ 12 июня 2019

Возможно ли иметь команду для перехвата как STDOUT, так и STDERR как отдельных потоков, чтобы использовать их в качестве аргументов в следующей команде?

Примером этого будет.

# foo outputs to stdout and stderr
# bar recieves in -i and -j streams that could be files but in general they are streams, so it would make sence to pipe to any of this two. 
$ foo | bar -i - -j -&2 

Могу ли я сделать это в bash? или в какой-то другой оболочке?

1 Ответ

2 голосов
/ 12 июня 2019

Вы можете сделать это с помощью именованных каналов:

mkfifo /tmp/whatever
foo 2>/tmp/whatever | bar -i - -j /tmp/whatever

На самом деле данные не записываются в /tmp/whatever.Ядро отправляет вывод процесса записи прямо в процесс чтения.

...