Wie kann man den Ausgang eines Echos an den Eingang eines anderen Echo übergeben?

2107
Andriy

Ich versuche folgendes

echo 5 | echo 

aber nichts bekommen. Was ist falsch?

1

1 Antwort auf die Frage

1
jcbermu

Befehle wie grepund awkkönnen die Standardeingabe (STDIN) als Parameter oder Argument unter Verwendung einer Pipe akzeptieren . Andere wie cpund echoignorieren jedoch den Standard-Eingabestrom und verlassen sich ausschließlich auf die nach dem Befehl gefundenen Argumente .

Mit dem Befehl können xargsSie Befehlszeilen aus Standardeingaben erstellen und ausführen, beispielsweise in Ihrem Fall:

echo 5 | xargs echo

Es gibt keine exakte Regel, um zu wissen, ob ein Befehl die Standardeingabe akzeptiert. Sie können jedoch mit diesen beiden Regeln etwas anfangen:

  • Wenn der Befehl verwendet wird, um irgendwie den Inhalt einer Datei zu manipulieren ( grep, sed, awketc.), dann in der Regel kann es dauern, eine Eingabe von STDIN.

  • Wenn der Befehl verwendet wird, um die Datei selbst (zB zu manipulieren mv, rm, cp) oder ein Verfahren (zB kill, lsof) oder Informationen über etwas zurück (zB top, find, ps), dann tut es nicht.