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 < address@hidden> 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