2008-12-01 12 views
7

Así que mi pregunta es si de alguna manera puedo enviar datos a mi programa y luego enviar los mismos datos Y su resultado a otro programa sin tener que crear un archivo temporal (en mi caso ouputdata.txt). Preferiblemente utilizando tubos de linux/bash.¿Cómo añado las tuberías?

Actualmente hago lo siguiente:

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

cat inputdata.txt outputdata.txt | ./MyProg2

Respuesta

11

Opción 1 - corregir MyProg para escribir la salida combinada de la entrada y su propia salida. Entonces puedes hacer esto.

./MyProg <inputdata.txt | ./MyProg2 

Opción 2 - Si no se puede arreglar MyProg escribir tanto de entrada como de salida, es necesario combinar.

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

Lo siento pero esta solución es fea. Simplemente arregle MyProg y enchúfelo con tuberías. –

+1

a) esto no es desagradable, b) la primera opción propone exactamente eso. – hop

21

Aquí hay otra manera, que se puede extender para poner la salida de dos programas juntos:

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

que al menos funciona en Bash.

+0

mezclémoslo para obtener una buena comida: (Prog1 & Prog2 & Prog3 & ...) | ProgN: p –

+0

LOL, sí, eso dará resultados interesantes :-D – derobert

Cuestiones relacionadas