tags:

views:

391

answers:

2

So my question is if I can somehow send data to my program and then send the same data AND its result to another program without having to create a temporary file (in my case ouputdata.txt). Preferably using linux pipes/bash.

I currently do the following:

cat inputdata.txt | ./MyProg > outputdata.txt

cat inputdata.txt outputdata.txt | ./MyProg2

+8  A: 

Choice 1 - fix MyProg to write the merged output from the input and it's own output. Then you can do this.

./MyProg <inputdata.txt | ./MyProg2

Choice 2 - If you can't fix MyProg to write both input and output, you need to merge.

./MyProg <inputdata.txt | cat inputdata.txt - | ./MyProg2
S.Lott
Sorry but this solution is ugly. Just fix MyProg and chain them together with pipes.
Brian C. Lane
a) this isn't ugly at all, b) the first choice proposes exactly that.
hop
+4  A: 

Here is another way, which can be extended to put the output of two programs together:

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

That at least works in Bash.

derobert
Johannes Schaub - litb
LOL, yeah, that'll give interesting results :-D
derobert