“/ dev / null 2 & 1” na instrução 'if'

6

Eu não entendo a condição if abaixo. Eu sei que /dev/null 2 > &1 está enviando a saída para o fluxo de erros (por favor corrija-me se eu estiver errado). Mas eu não entendo quando está em uma condição if

if /usr/bin/egrep -e "$param1" -e "$param2" -e "param3" ${file} > /dev/null 2>&1
then 
bla bla
    
por mibzer 19.03.2012 / 09:10

1 resposta

15

O if está interessado apenas no código de saída do grep (se ele encontrou algumas linhas que correspondem às condições), mas não na saída do comando grep, então ele redireciona toda saída para / dev / null, o que significa lugar algum.

Esse redirecionamento acontece em duas partes:

  • > /dev/null redireciona a saída padrão para lugar nenhum, ou seja, as linhas que egrep normalmente produzem
  • 2>&1 redireciona a saída de erro também para o mesmo local que a saída padrão, ou seja, para / dev / null; isto é para suprimir mensagens de erros do egrep.
por 19.03.2012 / 09:22