Forum: PC-Programmierung Linux: Aus-/Eingabe zweier Programm verbinden (Kommandozeile)


von Dago (Gast)


Lesenswert?

Es gibt zwei Programme. Das erste Programm gibt einen String aus, das 
zweite erwartet einen String als Argument. Wie ist es möglich unter 
Linux den ausgegebenen String des ersten Programms als Argument in das 
zweite Programm weiterzuleiten?

von ich (Gast)


Lesenswert?

> oder | vermute ich.

von User (Gast)


Lesenswert?

mit dem Pipe-Zeichen "|"

von Yalu X. (yalu) (Moderator)


Lesenswert?

So:

1
zweites_kommando "$(erstes_kommando)"

Shell-Pipes sind wieder etwas anders.

: Bearbeitet durch Moderator
von . . (Gast)


Lesenswert?

1
programm2 $(programm1)

von Dago (Gast)


Lesenswert?

Die Pipe leitet die Ausgabe auf die Eingabe um. Mein zweites Programm 
erwartet aber ein Argument.

Habe es spaßeshalber probiert:
1
BrokenPipeError: [Errno 32] Broken pipe

von Dago (Gast)


Lesenswert?

@ von . . (Gast)

Funktioniert. Danke :)

von Yalu X. (yalu) (Moderator)


Lesenswert?

Wenn der ausgegebene String von Programm1 Leerzeichen enthalten kann und
du vermeiden möchtest, dass daraus mehrere Tokens und somit mehrere
Argumente für Programm2 enstehen, musst du $(...) in Anführungszeichen
setzen.

von Dago (Gast)


Lesenswert?

Yalu X. schrieb:
> Wenn der ausgegebene String von Programm1 Leerzeichen enthalten kann und
> du vermeiden möchtest, dass daraus mehrere Tokens und somit mehrere
> Argumente für Programm2 enstehen, musst du $(...) in Anführungszeichen
> setzen.

Danke für den Tipp :)

von Rolf M. (rmagnus)


Lesenswert?

Es gibt auch das Programm xargs.
1
erstes_kommando | xargs zweites_kommando

von Stefan F. (Gast)


Lesenswert?

Oder so:
1
jetzt = `date`
2
echo $jetzt

von Eric (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> jetzt = `date`
> echo $jetzt

Aber bitte ohne Leerzeichen hinter jetzt und vor `date`

von Stefan F. (Gast)


Lesenswert?

Eric schrieb:
> Aber bitte ohne Leerzeichen hinter jetzt und vor `date`

Ja stimmt. Sehr aufmerksam.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.