Pourquoi la commande ci-dessous ne se ferme-t-elle pas? Plutôt que de sortir, la boucle fonctionne indéfiniment.
Alors que j'ai découvert ce comportement en utilisant une configuration plus complexe, la forme la plus simple de la commande se réduit à ce qui suit.
Ne quitte pas:
while /usr/bin/true ; do echo "ok" | cat ; done | exit 1
Il n'y a pas de fautes de frappe ci-dessus. Chaque '|' est une pipe. La «sortie 1» représente un autre processus qui s'est exécuté et s'est terminé.
Je m'attends à ce que la "sortie 1" provoque un SIGPIPE sur la boucle while (écrivez sur un tuyau sans lecteur) et que la boucle éclate. Mais, la boucle continue de fonctionner.
Pourquoi la commande ne s'arrête-t-elle pas?