Adicionar um "elif" na condicional [RESOLVIDO]

1. Adicionar um "elif" na condicional [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 23/02/2023 - 14:25h

pessoas .. como acrescento a condição para a igualdade ?
 [ 1 -gt 2 ] && echo "maior" || echo "menor" 



  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 23/02/2023 - 17:25h

Mauriciodez escreveu:

pessoas .. como acrescento a condição para a igualdade ?
 [ 1 -gt 2 ] && echo "maior" || echo "menor" 


Lembre que os operadores && e || não são short circuit (EDIT: originalmente eu tinha dito que eram, como são em C, mas isso não é verdade no shell; mas mesmo em C, os compiladores normalmente dão alertas caso não se usem parênteses em expressões que possam ficar ambíguas sem eles), significando que se a expressão à esquerda for suficiente para determinar a condição, o que vai à direita não é avaliado.

Isso, algumas vezes, pode implicar reescrever a operação, e também usar parênteses.
( (( a == b )) && echo "igual" ) || ( (( a < b )) && echo "menor" || echo "maior" ) 

A expressão acima significa testar a igualdade e imprimir o texto “igual” se essa hipótese ser verdadeira, e somente se essa hipótese for falsa, testar a hipótese de a ser menor que b e imprimir o texto “menor” para essa segunda hipótese ser verdadeira, imprimindo “false” caso a segunda hipótese seja falsa.

Se você tirar os parênteses do nível mais externo, transformando a expressão em
(( a == b )) && echo "igual" || (( a < b )) && echo "menor" || echo "maior" 
o sentido da expressão muda: acaba ficando com o mesmo sentido da seguinte expressão, que é obviamente errada.
(( a == b )) && ( echo "igual" || (( a < b )) ) && echo "menor" || echo "maior" 



... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)

3. Re: Adicionar um "elif" na condicional [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 23/02/2023 - 14:25h

Para adicionar um "elif" (ou seja, uma outra condição) à sua condicional, você pode usar o seguinte comando no terminal:

if [ 1 -gt 2 ]; then echo "maior"; elif [ 1 -eq 2 ]; then echo "igual"; else echo "menor"; fi

Esse comando verifica se o primeiro valor é maior que o segundo e, caso não seja, ele será verificado se é igual. Se também não for igual, então o "else" será usado e o terceiro valor é exibido. Assim, é possível adicionar mais "elif"s à sua condicional, dependendo das suas necessidades.


4. Re: Adicionar um

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 23/02/2023 - 17:59h

Mauriciodez escreveu:

pessoas .. como acrescento a condição para a igualdade ?
 [ 1 -gt 2 ] && echo "maior" || echo "menor" 

Boa tarde Mauricio.
A sintaxe que conheço para esse teste reduzido é:
((1>2)) && echo maior || { echo menor; ((1==2)) && echo sim || echo nao;} 

#----------------------------------------------------------------------------------------------#
Existe a opção de usar o "operador ternário".... mais complexo,
Exemplo:
x=2;
((d = ${x}>2 ? 0 : 1)); #Se $x é maior que 2, d=0, senão, d=1
(($d)) && (($x==2)) && echo "Igual a dois" || echo "Não é = dois" || echo false
Igual a dois
#----------------------------------------------------------------------------------------------#
x=1;
((d = ${x}>2 ? 0 : 1));
(($d)) && (($x==2)) && echo "Igual a dois" || echo "Não é = dois" || echo false
Não é = dois
#----------------------------------------------------------------------------------------------#
d=0;
(($d)) && echo true || echo false
É a simplificação da expressão:
[ "$d" -gt 0 ] && echo Maior || echo Menor
Ou
(($d>0)) && echo Maior || echo Menor
#----------------------------------------------------------------------------------------------#
É isso....


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



5. Re: Adicionar um "elif" na condicional [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 23/02/2023 - 20:11h

nos meus testes aqui o seguinte me resolveu
[ $a = $b ] && echo "igual" || ( [ $a -gt $b ] && echo "maior" || echo "menor" ) 


valeu aí aos experts no shell por ajudarem !!!

NOTA: Paulo ... o shell não se importou de eu ter retirado o parêntesis da primeira condição !!!

Abçs.

PS: Marcelo ... isso não funcionou
((1>2)) && echo maior || { echo menor; ((1==2)) && echo sim || echo nao;} 



------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------




6. Re: Adicionar um "elif" na condicional [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 23/02/2023 - 21:27h


Mauriciodez escreveu:


PS: Marcelo ... isso não funcionou
((1>2)) && echo maior || { echo menor; ((1==2)) && echo sim || echo nao;} 




Mauricio, aqui, no bash versão 5.1.4(1)-release
Funciona....
Com {}, () e sem nenhumas das anteriores....
((1>2)) && echo maior || { echo menor; ((1==2)) && echo sim || echo nao;}
menor
nao
((1>2)) && echo maior || ( echo menor; ((1==2)) && echo sim || echo nao;)
menor
nao
((1>2)) && echo maior || echo menor; ((1==2)) && echo sim || echo nao;
menor
nao



7. Re: Adicionar um "elif" na condicional [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 23/02/2023 - 21:30h


msoliver escreveu:
Mauricio, aqui, no bash versão 5.1.4(1)-release
Funciona....


a tá ... eu pensei que as duas respostas era um erro, kkkkkkk ... enfim ... o que eu precisava era somente a resposta simples ... maior, menor ou igual !!!

abçs

------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts