Angenommen, ich habe Programme P0
, P1
, ... P(n-1)
für einige n > 0
. Wie kann ich die Ausgabe des Programms Pi
auf das Programm P(i+1 mod n)
für alle i
(0 <= i < n
) umleiten?Wie man eine Pipe-Schleife in Bash
Zum Beispiel lassen Sie uns sagen, ich habe ein Programm square
, die immer wieder eine Reihe liest und als druckt das Quadrat dieser Zahl, und ein Programm calc
, die manchmal druckt eine Zahl, nach der es den Platz der Lage sein, erwartet zu lesen davon. Wie verbinde ich diese Programme so, dass, wenn calc
eine Nummer, square
Quadrate druckt, es an calc
zurückgibt?
Edit: Ich sollte wahrscheinlich klarstellen, was ich mit "leicht" meine. Die benannte Pipe-/Fifo-Lösung ist eine, die tatsächlich funktioniert (und ich habe sie in der Vergangenheit benutzt), aber es erfordert tatsächlich eine Menge Arbeit, um sie richtig zu machen, wenn man sie mit einer Bash-Pipe vergleicht. (Sie müssen einen noch nicht vorhandenen Dateinamen abrufen, eine Pipe mit diesem Namen erstellen, die Pipe-Schleife ausführen und die Named Pipe bereinigen.) Stellen Sie sich vor, Sie könnten prog1 | prog2
nicht mehr schreiben und müssten immer Named Pipes verwenden, um Programme zu verbinden .
Ich bin auf der Suche nach etwas, das fast so einfach ist wie das Schreiben einer "normalen" Pfeife. Zum Beispiel wäre so etwas wie { prog1 | prog2 } >&0
großartig.
Können Sie ein Beispiel über Zsh geben? Ich bin daran interessiert. –