Grep condicional sem opção silenciosa

Grep condicional sem opção silenciosa

Sempre pensei que a -qopção quiet ( ) deveria ser usada ao usar grepcondicionalmente. Mas relendo a manpágina parece que deveria funcionar sem ela.

Então, se você quiser imprimir correspondências e usá-las de forma condicional, você pode simplesmente fazer algo como

grep PATTERN FILE && do_something_else

A única coisa que me deixa incerto é que parece haver uma ligeira diferença no status de saída.

Com -q,

  • grep irá "sair imediatamente com status zero se alguma correspondência for encontrada,mesmo que um erro tenha sido detectado".

Sem-q

  • "O status de saída é 0 se as linhas selecionadas forem encontradas e 1 se não forem encontradas. Se ocorreu um erro, o status de saída é 2".

Mas não consigo pensar em um exemplo em que a diferença se torne perceptível.

Responder1

Aqui está um exemplo:

$ echo "foo" > file
$ grep foo file wrongfile; echo "Exit status: $?"
file:foo
grep: wrongfile: No such file or directory
Exit status: 2
$ grep -q foo file wrongfile;  echo "Exit status: $?"
Exit status: 0

Então, temos um arquivo chamado fileque contém a string foo. Quando executei grepon e o inexistente , pois continha uma correspondência, saí com status apesar do erro "Nenhum arquivo". -qfilewrongfilefilegrep0

informação relacionada