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