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

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

Re: [shell-script] Curiosidade sobre comando IF " disfarçado"


From: Clovis Fabricio Costa
Subject: Re: [shell-script] Curiosidade sobre comando IF " disfarçado"
Date: Thu, 22 Jun 2000 13:17:34 -0300

Rodolfo Villanova wrote:
> Assim, como a questão que irei colocar não é particular, e aborda a forma
> como o interpretador shell executa uma expressão lógica, segue o texto.
> if  [  \( $sexo  -eq  1  -o  $sexo -eq 2 \)  -a  \( $nome = Joao  -o  $nome
> = Maria \)  ]
> [ -d "$MeuDir" ] || mkdir $MeuDir && cd $MeuDir
> Concordas com meu raciocínio?
> Será isso uma incoerência do interpretador ou um equívoco de interpretação
> (minha, não do shell...!) ?

Bom. O comando if, executa o then se o resultado FOR ZERO, e executa o
else SE FOR DIFERENTE DE ZERO.
Por isso utilizamos o comando "test" ([) para fazer os testes dele. Este
comando test (digite help test) pode ser abreviado como colchetes, e
retorna 0 quanto é verdadeiro.
Já a execução de programas com || e && é completamente diferente. Não
tem comando test.
Os operadores && e || são operadores para lista de comandos. 
O AND (&&) so eh verdadeiro se ambos forem verdadeiros, ou seja, se
executar o primeiro e der falso (diferente de zero) ele nem executa o
segundo.
Ja o OR (||) so eh falso se ambos forem falsos, por isso, se o primeiro
der verdadeiro (zero) ele nem executa o segundo.
Estes operadores tem precedencia igual, ou seja, nao sao como os
operadores -a e -o do comando test.

Deu pra entender? Qq duvida pergunta ai (ou le o info bash) hehehe

Clovis


reply via email to

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