
Sempre pensei que a -q
opção quiet ( ) deveria ser usada ao usar grep
condicionalmente. Mas relendo a man
pá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 file
que contém a string foo
. Quando executei grep
on e o inexistente , pois continha uma correspondência, saí com status apesar do erro "Nenhum arquivo". -q
file
wrongfile
file
grep
0