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

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

Re: [shell-script] duvida com if e operador ||


From: Jonathan Lessa
Subject: Re: [shell-script] duvida com if e operador ||
Date: Mon, 25 May 2015 16:04:43 -0300

Pelo que vc passou vc está testando se é diferente e não se é igual

if [ $vdata != "Mon" ] || [ $vdata != "Sun" ]; then echo certo; else echo errado; fi


O problema aí é que qualquer dia da semana que vc teste sempre fará com ele ele seja diferente de uma das duas opções, ou seja, sempre será verdadeiro.

Se vc quer confirmar que o dia testado é "um ou outro" recomendo testar se é igual e não se é diferente:
if [ $vdata == "Mon" ] || [ $vdata == "Sun" ]; then echo certo; else echo errado; fi




Em 25 de maio de 2015 14:39, address@hidden [shell-script] <address@hidden> escreveu:
 

Pessoal, boa tarde.



Gostaria de ajuda quanto ao tópico abaixo:

Estou testando a condição de uma variável utilizando o Operador || (OU) da seguinte forma: 

$date "+%a" # O comando date retornando o valor da Semana. Neste caso, estou considerando a data do Dia sendo segunda feira

Mon


$vdata=`date "+%a"` # A variável  "$vdata" está carregando o valor do comando Date

# Ao testar a variável, com a condição de que Se $vdata é difente de "Mon" ou $vdata é diferente de "Sun", retorna a mensagem "Nao eh dia correto", se não "Eh o dia correto"


Na pagina 197 de Programação Shell Linux, 09º ed, a explicação é: 

"

11 (or ou ou lógico)

De acordo com a "Tabela Verdade", para que um teste tipo <condl > ou

<cond2> seja verdadeiro, é necessário que qualquer uma das condições seja

verdadeira. Assim, se <condl> for verdadeira, <cond2> não será executada,

pois certamente o resultado final será verdadeiro "


Considerando que a data é igual a "Mon", o Shell deveria considerar o primeiro Teste do IF, validando o resultado como Eh o dia correto e encerrando o Teste. Porém não é isto que ocorre. 


Aparentemente o Shell testa as duas condições Juntas e retorna o resultado:

if [ $vdata != "Mon" ] || [ $vdata != "Sun" ]; 

 then 

   echo "Nao eh dia correto"

  else 

   echo "Eh o dia correto"

 fi

Nao eh dia correto





--
Att.:
Jonathan Lessa
MTCNA - MikroTik Certified Network Associate
MTCRE - MikroTik Certified Routing Engineer
MTCINE - MikroTik Certified Inter-networking Engineer

reply via email to

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