2008-12-01 2 views
7

Итак, мой вопрос в том, могу ли я как-то отправить данные в свою программу, а затем отправить те же данные и их результат в другую программу, не создавая временный файл (в моем случае ouputdata.txt). Предпочтительно использовать linux pipe/bash.Как добавить на трубы?

В настоящее время я сделать следующее:

кошки inputdata.txt | ./MyProg> outputdata.txt

cat inputdata.txt outputdata.txt | ./MyProg2

ответ

11

Выбор 1 - исправить MyProg, чтобы написать объединенный выход с входа и его собственный выход. Тогда вы можете это сделать.

./MyProg <inputdata.txt | ./MyProg2 

Choice 2 - Если вы не можете исправить MyProg писать как вход и выход, вам необходимо объединить.

./MyProg <inputdata.txt | cat inputdata.txt - | ./MyProg2 
+0

Извините, но это решение является уродливым. Просто исправьте MyProg и соедините их вместе с трубами. – 2008-12-01 16:22:50

+1

а) это совсем не уродливо, б) первый выбор предлагает именно это. – hop 2008-12-01 16:38:11

21

Вот еще один способ, который может быть расширен, чтобы положить выход двух программ вместе:

(Prog1; Prog2; Prog3; ... ) | ProgN 

Это по крайней мере, работает в Bash.