Відповідно до його документації, bash чекає, поки всі команди в трубопроводі закінчаться, перш ніж продовжувати
Оболонка чекає, коли всі команди в трубопроводі завершаться перед поверненням значення.
То чому команда yes | trueзакінчується негайно? Чи не повинен yesцикл назавжди і змусити трубопровід ніколи не повернутися?
І під питання: відповідно до специфікації POSIX , конвеєрні трубопроводи можуть вибрати або повернутися після завершення останньої команди, або чекати, поки всі команди завершаться. Чи мають у цьому сенсі звичайні оболонки різної поведінки? Чи є снаряди, де yes | trueназавжди будуть петлі?
trueв основному це {return 0;}програма, тому я не очікував, що вона буде працювати довго, не кажучи вже назавжди.
yes | tee >(true) >/dev/nullзробить так, як ви очікуєте, btw, якteeтриває, поки всі письменники не мертві, томуtrueвихід із системи не порушить його повністю.