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
