Mam grep
rozkaz Szukam słowa kluczowego z pliku, ale nie chcę wyświetlać dopasowania. Chcę tylko poznać status wyjścia grep
.
shell-script
scripting
grep
jackass27
źródło
źródło
echo $?
jeśligrep
zwróci niezerowy kod wyjścia.Musisz po prostu połączyć się
grep -q <pattern>
z natychmiastowym sprawdzeniem kodu wyjścia, aby ostatni proces zakończył ($?
).Możesz użyć tego do zbudowania takiego polecenia, na przykład:
uname -a | grep -qi 'linux' ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error" ;; esac
Opcjonalnie możesz ukryć dane wyjściowe z
STDERR
:grep -qi 'root' /etc/shadow &> /dev/null ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error: $?" ;; esac
Zostanie to wydrukowane
error: 2
zcase
instrukcji (zakładając, że nie mamy uprawnień do odczytu/etc/shadow
lub że plik nie istnieje), ale komunikat o błędzie zgrep
zostanie przekierowany/dev/null
, abyśmy go nigdy nie widzieli.źródło