Какой смысл "grep -q" - PullRequest
       31

Какой смысл "grep -q"

4 голосов
/ 16 мая 2019

Я читал справочную страницу grep и наткнулся на опцию -q, которая говорит grep «не записывать ничего в стандартный вывод. Немедленно завершите работу с нулевым состоянием, если найдено какое-либо совпадение, даже если обнаружена ошибка».

Я не понимаю, почему это может быть желательным или полезным поведением.В программе, причина которой, кажется, читается из stdin, обрабатывает, пишет в stdout, почему я хотел бы полностью замолчать?

В каком случае было бы полезным отключение программы, целью которой является вывод данных?Почему кто-то хочет полностью игнорировать ошибки и принудительно вводить код возврата?

Спасибо!

1 Ответ

6 голосов
/ 16 мая 2019

Статус выхода grep не обязательно указывает на ошибку & thinsp ;; это означает успех или сбой . grep определяет успех как соответствие 1 или более строк. Ошибка включает в себя совпадение нулевых строк, или некоторую другую ошибку, которая помешала совпадению в первую очередь.

-q используется, когда вам не важно, какие строки совпадают, только то, что некоторые строки совпадают.

if grep -q foo file.txt; then
    echo "file.txt contains foo"
else
    echo "file.txt does not contain foo"
fi
...