Pisałem prosty skrypt, który sprawdza dane wyjściowe polecenia, które wyświetla określone słowo kluczowe. Aby zobaczyć, czy to działa, sprawdzałem polecenie z linii poleceń bash.
$ ls | grep -q foo $ echo $?
Wyświetlany 1 lub 0 zależy od wyniku polecenia i parametru grep, jak się spodziewałem.
Trochę leniwie wpisuję polecenie, więc dodałem je | echo $?
na końcu wiersza poleceń.
$ ls | grep -q foo | echo $?
Następnie, niezależnie od wyniku polecenia, zawsze zwraca 0, nawet jeśli pierwsza część zwraca 1.
Myślę, że to normalne zachowanie, ale chciałbym wiedzieć, dlaczego bash działa w ten sposób.