[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: |
Tiago Barcellos Peczenyj |
Subject: |
Re: [shell-script] Re: Sintaxe do IF (usando ponto e vírgula) |
Date: |
Wed, 6 Jun 2007 10:54:22 -0300 |
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]
Re: [shell-script] Sintaxe do IF (usando ponto e vírgula), Tiago Barcellos Peczenyj, 2007/06/06