Eu tenho o grep
comando. Estou procurando uma palavra-chave em um arquivo, mas não quero exibir a correspondência. Eu só quero saber o status de saída do grep
.
shell-script
scripting
grep
jackass27
fonte
fonte
echo $?
segrep
retornar um código de saída diferente de zero.Você só precisa combinar
grep -q <pattern>
com uma verificação imediata do código de saída para o último processo sair ($?
).Você pode usar isso para criar um comando como este, por exemplo:
uname -a | grep -qi 'linux' ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error" ;; esac
Você pode opcionalmente suprimir a saída da seguinte
STDERR
maneira:grep -qi 'root' /etc/shadow &> /dev/null ; case "$?" in "0") echo "match" ;; "1") echo "no match" ;; *) echo "error: $?" ;; esac
Isso será impresso a
error: 2
partir dacase
instrução (assumindo que não temos privilégios para ler/etc/shadow
ou que o arquivo não existe), mas a mensagem de erro degrep
será redirecionada para,/dev/null
para que nunca a vejamos.fonte