Ops, acho que chupei uma balinha com os teus arquivos, mas o
raciocinio continua o mesmo, basta usar a exclude.list no grep

grep -vf /../exclude.list recipients

Beeem mais simples, desculpe complicar :/

On 1/17/07, Tiago Barcellos Peczenyj <[EMAIL PROTECTED]> wrote:
> amigo,
>
> para vc executar a string conforme o seu significado vc precisa usar o
> comando eval
> (acho que foi tirado do livro do Julio... hehe)
>
> PIPE='|'
>
> ls $PIPE grep X  # da erro
>
> eval ls $PIPE grep X  # funciona!
>
> Entretanto me parece que o seu script não vai funcionar da maneira
> como vc deseja.
>
> por que ?
>
> A variavel i vai receber cada string do seu arquivo, e não cada linha
> $ for i in `cat exclude.list `; do echo $i ; done
> teste
> OK
> teste1
> OK
> teste2
> OK
> teste3
> OK
>
> Eu faria assim:
>
> # pego a lista de linhas que não tem a palavra OK (ex: pega NOK)
> grep -vw "OK" exclude.list | tratamento > /tmp/lista
>
> o que é tratamento? se vc usa uma palavra como NOK, vc deve removela
> com sed ou algo assim. se não usa nada alem da string que vc quer
> usar, basta não usar nada
>
> grep -vw "OK" exclude.list | tr -d ' ' > /tmp/lista
>
> # por que estou removendo espaços em branco? veja abaixo
>
> grep -vf /tmp/list recipients # uso a lista como fonte de pesquisa e
> inverto a busca
>
> Didaticamente:
>
> $ cat exclude.list # o teste4 e 5 não deve aparecer!
> teste OK
> teste1 OK
> teste2 OK
> teste3 OK
> teste4
> teste5
>
> $ grep -vw "OK" exclude.list # humm!
> teste4
> teste5
>
> $ grep -vw "OK" exclude.list | tr -d ' ' > /tmp/list
>
> $ cat recipients # eis a lista onde o teste4 e 5 nao podem aparecer
> teste1
> teste2
> teste3
> teste4
> teste5
> teste6
> teste7
> teste8
> teste9
> teste10
>
> $ grep -vf /tmp/list recipients # tcharam!
> teste1
> teste2
> teste3
> teste6
> teste7
> teste8
> teste9
> teste10
>
> Acho que é isso que vc quer.
>
> []´s Tiago
>
> On 1/17/07, Vini < [EMAIL PROTECTED]> wrote:
> >
> >
> >
> >
> >
> >
> > Pessoal,
> >
> >  estou tentando executar o script abaixo mais ele ta dando erro....
> >
> >  #!/bin/bash
> >
> >  for i in `cat /etc/postfix/exclude.list`
> >  do
> >          if [ $i <> "OK" ]
> >          then
> >                  exclude="$exclude | grep -v $i"
> >          fi
> >  done
> >
> >  cat /etc/postfix/recipients $exclude
> >  ### FIM ####
> >
> >  exclude.list :
> >
> >  teste1
> >
> >  recipients:
> >
> >  teste OK
> >  teste1 OK
> >  teste2 OK
> >  teste3 OK
> >
> >  se eu der um echo na ultima linha (echo "cat /etc/postfix/recipients
> >  $exclude") e executar a saida dele funciona, mais se eu tentar executar o
> >  script e ele retorna a seguinte mensagem de erro:
> >
> >  teste OK
> >  teste1 OK
> >  teste2 OK
> >  teste3 OK
> >  cat: |: Arquivo ou diretório não encontrado
> >  cat: grep: Arquivo ou diretório não encontrado
> >  teste1
> >
> >  Alguem tem idéia do que pode ser?
> >
> >  --
> >  Atenciosamente,
> >  Vinicius.
> >
> >  [As partes desta mensagem que não continham texto foram removidas]
> >
> >                    
>
>
>
> --
> Tiago B Peczenyj
>  Linux User #405772
>
> # cd /pub
> # more beer
>


-- 
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer

Responder a