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

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

Re: [shell-script] Re: Sintaxe do IF (usando ponto e vírgula)


From: Bruno Gunter Fricke
Subject: Re: [shell-script] Re: Sintaxe do IF (usando ponto e vírgula)
Date: Wed, 06 Jun 2007 11:16:10 -0300

Vai dar true mesmo... Use && ou || (dependendo de cada caso) para evitar
isso.

[]'s
Bruno Gunter


Em Qua, 2007-06-06 às 10:54 -0300, Tiago Barcellos Peczenyj escreveu:
> uma coisa interessante:
> 
> dentro de um diretorio eu tenho o arquivo b.c
> 
> $ if test -f b.c ; then echo "arquivo" ; else echo "nao eh arquivo" ;
> fi
> arquivo
> 
> $ if test -f .. ; then echo "arquivo" ; else echo "nao eh arquivo" ;
> fi
> nao eh arquivo
> 
> ok, agora vamos colocar algo antes do then
> 
> $ if test -f b.c ; echo "ola mundo" ; then echo "arquivo" ; else echo
> "nao
> eh arquivo" ; fi
> ola mundo
> arquivo
> 
> ora.. foi executado ! aparentemente não influenciou o resultado,
> mas...
> 
> $ if test -f .. ; echo "ola mundo" ; then echo "arquivo" ; else echo
> "nao
> eh arquivo" ; fi
> ola mundo
> arquivo
> 
> OPA! O resultado foi alterado! Vejamos agora:
> 
> $ if echo "ola mundo" ; test -f .. ; then echo "arquivo" ; else echo
> "nao
> eh arquivo" ; fi
> ola mundo
> nao eh arquivo
> 
> Agora ficou mais claro! quando temos mais de uma instrução no if,
> separados
> por ponto e virgula, é testado o retorno da condição pela variavel $?
> e, ao
> que parece, a ultima instrução é que define se o bloco then ou else
> será
> executado. um echo sempre retorna $? como 0, então se vc fizer
> 
> if [condições] ; echo "XXX" ;
> 
> isso sempre será verdadeiro, pois o echo no final garante isso.
> 
> Agora se tentamos fazer
> 
> $ for i in 1 2 3 ; echo "XXX" ; do echo $i ; done
> bash: syntax error near unexpected token `echo'
> 
> Sinto dificuldade de ver alguma utilidade pratica de 'burlar' um if
> assim,
> mas fica ai a dica.
> 
> []s Tiago
> 
> On 6/6/07, box_ferrari <address@hidden> wrote:
> >
> > --- Em address@hidden<shell-script%
> 40yahoogrupos.com.br>,
> > "Tiago Barcellos Peczenyj"
> > <tiago.peczenyj@...> escreveu
> > >
> > > ferrari
> > >
> > > o ponto e virgula serve para vc separar 2 instruções na mesma
> linha
> > >
> > > ls ; mv a b
> > >
> > > por exemplo, eu gosto de fazer
> > >
> > > if [ condição ] ; then
> > > comandos
> > > else
> > > outros comandos
> > > fi
> > >
> > > acho mais legível. perceba que o ; separa o if do then na mesma
> linha.
> > >
> > > é a forma como o if, o for, o while/until foram concebidos.
> > >
> > > []´s Tiago
> >
> > Tiago, muito obrigado pela luz.
> >
> > Desculpem-me pela dúvida tão básica, mas eu estava racionando pela
> > lógica de algumas linguagens, como o pascal, que não reconhecem
> quebra
> > de linha e exigem terminadores.
> >
> > Já li bastante sobre o shell script, mas nunca me ative ao fato que
> a
> > sintaxe destes comandos exigia a quebra de linha. Eu estava
> > raciocioando que se o script executa comandos em lote, e no shell
> cada
> > comando ocupa uma linha, o if também deveria ocupar uma única linha,
> > do if ao fi e que, neste caso, as quebras de linhas seriam ignoradas
> > e substituídas por um terminador (o ;). Justamente ao contrário.
> >
> > Grato mesmo pela explicação.
> >
> > 
> >
> 
> -- 
> Tiago B Peczenyj
> Linux User #405772
> 
> # cd /pub
> # more beer
> 
> [As partes desta mensagem que não continham texto foram removidas]
> 
> 
> 
> 
> 
>  


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



reply via email to

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