Selon sa documentation, bash attend que toutes les commandes d'un pipeline aient fini de s'exécuter avant de continuer
Le shell attend que toutes les commandes du pipeline se terminent avant de renvoyer une valeur.
Alors pourquoi la commande se yes | truetermine-t-elle immédiatement? La yesboucle ne devrait-elle pas indéfiniment et empêcher le pipeline de revenir?
Et une sous-question: selon la spécification POSIX , les pipelines shell peuvent choisir de retourner après la fin de la dernière commande ou d'attendre que toutes les commandes se terminent. Les coquilles communes ont-elles un comportement différent dans ce sens? Y a-t-il des obus yes | truequi boucleront pour toujours?
trueest fondamentalement un {return 0;}programme, donc je ne m'attendrais pas à ce qu'il fonctionne pendant longtemps, et encore moins pour toujours.
yes | tee >(true) >/dev/nullfera ce que vous attendez, btw, comme celateecontinue jusqu'à ce que tous les écrivains soient morts, donc latruesortie ne le perturbera pas complètement.