[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