Возможный дубликат:
osx/linux: трубы в два процесса?
Есть ли способ передать вывод из одной команды на вход двух других команд, запуская их одновременно?
Что-то вроде этого:
$ echo 'test' |(cat) |(cat)
test
test
Причина, по которой я хочу сделать это, заключается в том, что у меня есть программа, которая принимает FM-радиосигнал с устройства SDR USB и выводит аудио как необработанные данные PCM (например, файл .wav, но без заголовка). Поскольку сигнал - это не музыка, а данные пейджера POCSAG, мне нужно передать его в программу декодера, чтобы восстановить текст пейджера. Однако я также хочу слушать сигнал, поэтому я знаю, поступают ли какие-либо данные или нет. (В противном случае я не могу определить, нарушен ли декодер или нет только данных, которые транслируются.) Так же, как и передача данных в пейджер-декодер, мне также нужно передать те же данные команде play
.
В настоящее время я знаю только, как это сделать: либо подключить его к декодеру, либо прочитать данные в тишине, либо передать его на play
и прослушать, не видя никакого декодированного текста.
Как я могу передать те же данные обеим командам, чтобы я мог читать текст и слышать звук?
Я не могу использовать tee
, поскольку он только записывает дублированные данные в файл, но мне нужно обрабатывать данные в режиме реального времени.