Der Dokumentation zufolge wartet die Bash, bis alle Befehle in einer Pipeline ausgeführt wurden, bevor sie fortgesetzt werden
Die Shell wartet, bis alle Befehle in der Pipeline beendet sind, bevor sie einen Wert zurückgibt.
Warum wird der Befehl dann yes | truesofort beendet? Sollte die yesSchleife nicht für immer andauern und die Pipeline niemals zurückkehren lassen?
Und eine Unterfrage: Gemäß der POSIX-Spezifikation können Shell-Pipelines entweder nach Beendigung des letzten Befehls zurückkehren oder warten, bis alle Befehle beendet sind. Haben gemeinsame Muscheln in diesem Sinne ein unterschiedliches Verhalten? Gibt es Muscheln, in denen yes | trueeine Endlosschleife erstellt wird?
trueist im Grunde ein {return 0;}Programm, also würde ich nicht erwarten, dass es lange läuft, geschweige denn für immer.
yes | tee >(true) >/dev/nullwird übrigens soteeweiter machen, wie Sie es erwarten, bis alle Autoren tot sindtrue.