Zgodnie z jego dokumentacją, bash czeka, aż wszystkie polecenia w potoku zakończą działanie, zanim przejdzie dalej
Powłoka czeka na zakończenie wszystkich poleceń w potoku przed zwróceniem wartości.
Dlaczego więc polecenie yes | true
kończy się natychmiast? Czy yes
pętla nie powinna być wieczna i spowodować, że rurociąg nigdy nie powróci?
I podpytanie: zgodnie ze specyfikacją POSIX potoki powłoki mogą powrócić po zakończeniu ostatniego polecenia lub poczekać, aż wszystkie polecenia zakończą się. Czy zwykłe muszle zachowują się inaczej w tym sensie? Czy są jakieś muszle, w których yes | true
zapętla się na zawsze?
true
jest w zasadzie {return 0;}
programem, więc nie spodziewałbym się, że będzie działał długo, nie mówiąc już o wieczności.
yes | tee >(true) >/dev/null
zrobi tak, jak się spodziewasz, taktee
dalej, dopóki wszyscy pisarze nie umrą, więctrue
odejście nie zakłóci ich całkowicie.