shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problema com aspas duplas e simples dentro do IF


From: Leonardo Bernardes
Subject: Re: Problema com aspas duplas e simples dentro do IF
Date: Sat, 15 Aug 2009 17:20:22 -0000
User-agent: eGroups-EW/0.82

Salve Julio,

Eu estava usando do modo que você sugeriu, mas depois de tantos erros, eu 
resolvi tentar de uma forma mais primitiva. De fato o erro estava no tr, mas eu 
ACHO que não era o tr do teste, mas o do comando. Porque antes de ver sua 
mensagem eu resolvi o problema com o seguinte código:

[ -n "$(cat temp.html |tr " " "\n" |grep -iEo "href.*\[^<>\].*jpg")" ] && {
        varib="cat temp.html |tr ' ' '\n' |grep -iEo "href.*jpg" |grep -v 
"[?/]" |tr \' \" |cut -d\" -f2 |grep -v \' "
}
[ -n "$(cat temp.html |tr " " "\n" |grep -iEo "[[:alnum:]]+.jpg" |grep -vi 
"http")" ] && {
        varib="cat temp.html |tr ' ' '\n' |grep -iEo "[[:alnum:]]+.jpg" "
}

Ou seja, troquei as aspas duplas do tr por aspas simples, no COMANDO. Mas eu 
pensei que não fosse funcionar porque na minha cabeça as aspas simples iriam 
tirar o escape \n da sua condição e transformá-lo em caratere normal. Até 
agora, aliás, não sei porque isso NÃO aconteceu. Se você puder me explicar 
isso, eu agradeço muito.

A propósito, eu tenho os links que você sugeriu  (impressos, inclusive) -- eles 
são sempre de MUITA valia. Assim que encontrei o problema, procurei lá dentro 
alguma referência que pudesse me ajudar, mas não consegui encontrar. O problema 
é que eu tava pedindo pro tr substituir o espaço em branco por uma quebra e, no 
meu juízo, não havia porque ele não executar isso.

Obrigado pela atenção, abraços

--- Em address@hidden, "Julio C. Neves" <julio.neves@...> escreveu
>
>  Fala Leonardo,
> O problema ocorreu qdo vc fechou as aspas logo após o tr. No seu raciocínio,
> vc queria inibir a interpretação do espaço, mas o que vc fez foi justamente
> expor o espaço para o cmd test. (aqueles colchetes que vc usou são o cmd
> test) e por isso o erro (que vc deveria ter mostrado para facilitar o
> pessoal que ajuda) deve ter sido algo como "too many operands". Troque as
> aspas internas por apóstrofos que o peograma funcionará.
> 
> De qq forma vc está usando o if na forma das linguagens convencionais, ou
> seja, vc o está usando de uma forma não otimizada. vc poderia fazer o mesmo
> da seguinte forma:
> 
> if  tr " " "\n" < temp.html |grep -iE "href.*\[^<>\].*jpg"; then
> 
> 
> Para vc entender o uso do if, que em shell é cmd muito poderoso, dê uma lida
> rápida neste 
> texto<http://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo003#O_Comando_if>e
> em sua
> continuação<http://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo004#O_Comando_test>.
> Tenho certeza que será um excelente investimento em know how, que não te
> tomará mais de 10 minutos.
> -- 
> Abraços,
> Julio
> Cursos de Shell e Zenity?
> - Em SP ligue (11) 2125-4747 (dias 29-30/08 e 12-13/09);
> - Em DF ligue (61) 3223-3000;
> - No RJ ligue (21) 2561-0867;
> - Turmas fechadas em outras cidades ligue (21) 8112-9988.
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]