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 | true
termine-t-elle immédiatement? La yes
boucle 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 | true
qui boucleront pour toujours?
true
est 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/null
fera ce que vous attendez, btw, comme celatee
continue jusqu'à ce que tous les écrivains soient morts, donc latrue
sortie ne le perturbera pas complètement.