Я писал простой скрипт, который проверяет вывод команды, если она отображает определенное ключевое слово. Чтобы проверить, работает ли это, я проверял команду из командной строки bash.
$ ls | grep -q foo $ echo $?
Отображаемое значение 1 или 0 зависит от вывода команды и параметра grep, как я и ожидал.
Мне немного лень набирать команду снова, поэтому я добавил ее | echo $?
в конец командной строки.
$ ls | grep -q foo | echo $?
Затем, независимо от вывода команды, он всегда возвращает 0, даже если первая часть возвращает 1.
Я думаю, это нормальное поведение, но я хотел бы знать, почему bash работает таким образом.