Тот же эффект может быть достигнут довольно легко с FIFO. Я не знаю о прямом синтаксисе для этого (хотя было бы неплохо его увидеть). Вот как вы можете сделать это с fifo.
Во-первых, что-то, что печатает как stdout
, так и stderr
, outerr.sh
:
#!/bin/bash
echo "This goes to stdout"
echo "This goes to stderr" >&2
Тогда мы можем сделать что-то вроде этого:
$ mkfifo err
$ wc -c err &
[1] 2546
$ ./outerr.sh 2>err | wc -c
20
20 err
[1]+ Done wc -c err
Таким образом, вы сначала настраиваете прослушиватель на вывод stderr
, и он блокируется, пока не будет записывающее устройство, что происходит в следующей команде с использованием синтаксиса 2>err
. Вы можете видеть, что каждый wc -c
имеет 20 символов ввода.
Не забудьте почистить fifo после того, как вы закончите, если вы не хотите, чтобы он зависал (т.е. rm
). Если другая команда хочет вводить по stdin
, а не по аргументу файла, вы также можете использовать перенаправление ввода, например wc -c < err
.