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 | true
sofort beendet? Sollte die yes
Schleife 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 | true
eine Endlosschleife erstellt wird?
true
ist 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/null
wird übrigens sotee
weiter machen, wie Sie es erwarten, bis alle Autoren tot sindtrue
.