У меня есть grep
команда. Я ищу ключевое слово в файле, но не хочу отображать совпадение. Я просто хочу знать статус выхода grep
.
shell-script
scripting
grep
jackass27
источник
источник
echo $?
еслиgrep
вернет ненулевой код завершения.Вам просто нужно объединиться
grep -q <pattern>
с немедленной проверкой кода завершения для последнего процесса quit ($?
).Вы можете использовать это для создания такой команды, например:
uname -a | grep -qi 'linux' ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error" ;; esac
Вы можете при желании подавить вывод,
STDERR
например, так:grep -qi 'root' /etc/shadow &> /dev/null ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error: $?" ;; esac
Это напечатает
error: 2
изcase
оператора (при условии, что у нас нет привилегий на чтение/etc/shadow
или что файл не существует), но сообщение об ошибке отgrep
будет перенаправлено,/dev/null
чтобы мы никогда его не увидели.источник