Dlaczego poniższe polecenie nie wychodzi? Zamiast wyjść, pętla działa w nieskończoność.
Podczas gdy odkryłem to zachowanie za pomocą bardziej złożonej konfiguracji, najprostsza forma polecenia sprowadza się do następujących.
Nie wychodzi:
while /usr/bin/true ; do echo "ok" | cat ; done | exit 1
Powyżej nie ma literówek. Każdy „|” jest fajką. „Wyjście 1” oznacza kolejny proces, który został uruchomiony i zakończył się.
Oczekuję, że „wyjście 1” spowoduje SIGPIPE w pętli while (zapisz na potoku bez czytnika) i spowoduje przerwanie się pętli. Ale pętla nadal działa.
Dlaczego polecenie się nie zatrzymuje?