У меня есть эта команда:
grep -E '^nothing' List.txt | echo $?
Здесь grep ничему не соответствует, и я просто вывожу его код выхода. Согласно документации grep:
Обычно статус выхода равен 0, если линия выбрана, 1, если строки не выбраны, и 2, если произошла ошибка. Однако, если используется опция -q или --quiet или --silent и выбрана строка, статус выхода равен 0, даже если произошла ошибка. Другие реализации grep могут выйти со статусом больше 2 в случае ошибки.
Но:
prompt:user$ grep -E '^nothing' List.txt | echo $?
0
prompt:user$
Но почему я получаю 0 в качестве вывода, даже если совпадение не существует, разве я не должен получить ожидаемый код выхода 1?
which will always print exit status of previous command and that will always be 0 whether pattern is found or not.
, но если шаблон не найден, greps завершается с единицей, так не должна ли она быть единицей? 01.12.2014grep -E '^nothing' List.txt | echo $?
выводит статус выхода команды, которая была выполнена доgrep
, а не этойgrep
команды. 01.12.2014