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

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

Re: [shell-script] Problema com aspas duplas e simples dentro do IF


From: Julio C. Neves
Subject: Re: [shell-script] Problema com aspas duplas e simples dentro do IF
Date: Sat, 15 Aug 2009 13:55:58 -0300

 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.


2009/8/15 Leonardo Bernardes <address@hidden>

>
>
> Olá amigos,
>
> Tenho o seguinte código
>
> if [ -n "$(cat temp.html |tr " " "\n" |grep -iEo "href.*\[^<>\].*jpg")" ];
> then
> echo cat temp.html |tr " " "\n" |grep -iEo "href.*jpg" |grep -v "[?/]" |tr
> \' \" |cut -d\" -f2 |grep -v \' > templ.txt
> elif [ -n "$(cat temp.html |tr " " "\n" |grep -iEo "[[:alnum:]]+.jpg" |grep
> -vi "http")" ]; then
> echo cat temp.html |tr " " "\n" |grep -iEo "[[:alnum:]]+.jpg" > templ.txt
> else
> exit
> fi
>
> Usei o echo jogando o comando pra um arquivo porque se eu uso uma variável,
> ele não funciona. Em ambos os casos, ele lê apenas a primeira parte do
> comando. A solução seria: usar aspas duplas ou simples pra formar um BLOCO.
> Mas se eu faço isso, depois, quando chamo o eval ou quando peço pra ler o
> arquivo templ.txt, ele simplesmente dá erro. Como se as aspas duplas ou
> simples não funcionassem dentro do IF
>
> Fora do IF, se eu uso uma variável assim
> templ='cat temp.html |tr " " "\n" |grep -iEo "[[:alnum:]]+.jpg"'
> Ela funciona perfeitamente, mas se eu fizer o mesmo dentro do IF
>
> if [ -n "$(cat temp.html |tr " " "\n" |grep -iEo "href.*\[^<>\].*jpg")" ];
> then
> varib='cat temp.html |tr " " "\n" |grep -iEo "href.*jpg" |grep -v "[?/]"
> |tr \' \" |cut -d\" -f2 |grep -v \''
> elif [ -n "$(cat temp.html |tr " " "\n" |grep -iEo "[[:alnum:]]+.jpg" |grep
> -vi "http")" ]; then
> varib='cat temp.html |tr " " "\n" |grep -iEo "[[:alnum:]]+.jpg"'
> else
> echo -e "\e[32mNenhum dos dois\e[0m"
> fi
>
> Dá erro (em outro lugar que não tem nada a ver com esse código):
> : unexpected EOF while looking for matching `''
> : line 150: syntax error: unexpected end of file
>
> O que eu faço? Há mesmo algum uso especial das aspas dentro do IF?
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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