Perché il comando qui sotto non termina? Invece di uscire, il ciclo si avvia indefinitamente.
Mentre ho scoperto questo comportamento usando una configurazione più complessa, la forma più semplice del comando si riduce a quanto segue.
Non esce:
while /usr/bin/true ; do echo "ok" | cat ; done | exit 1
Non ci sono errori di battitura sopra. Ogni '|' è una pipa. L '"uscita 1" sostituisce un altro processo eseguito ed chiuso.
Mi aspetto che l '"uscita 1" provochi un SIGPIPE sul ciclo while (scrivere su una pipe senza lettore) e che il ciclo si interrompa. Ma il ciclo continua a funzionare.
Perché il comando non si ferma?