IF com duas condições [RESOLVIDO]

1. IF com duas condições [RESOLVIDO]

hauck
hauck

(usa Nenhuma)

Enviado em 13/01/2019 - 18:00h

Em meu script está dando um erro na pergunta docker_help_iniciar, após o usuário dizer o que deseja executar não acontece nada
O IF de onde está "$docker_help_iniciar" = "help" eu já tentei substituir por ELIF, e também tentei trocar || por -o
iniciar e docker_help_iniciar são a mesma pergunta em áreas diferentes do script
Podem olhar este trecho de código? Obrigado.


echo -n "[k/t/help] "
read iniciar

echo -n " [k/t/help] "
read docker_help_iniciar

if [ "$iniciar" = "t" ] || [ "$docker_help_iniciar" = "t" ]; then
elif [ "$iniciar" = "k" ] || [ "$docker_help_iniciar" = "k" ]; then

fi

if "$iniciar" = "help" ] || [ "$docker_help_iniciar" = "help" ]
then

fi



  


2. MELHOR RESPOSTA

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 14/01/2019 - 22:57h

hauck escreveu:
Claro que dá pra testar na tua máquina o código completo


já te demos os 'IF' funcionais, agora cabe a vc desenvolver o script em torno dele, se não está iniciando aí com o script que te passamos o erro é aí na sua máquina, logo testar o script aqui não vai mudar sua vida em nada !!!

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

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

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


3. Re: IF com duas condições [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 13/01/2019 - 18:37h

hauck escreveu:

Em meu script está dando um erro na pergunta docker_help_iniciar, após o usuário dizer o que deseja executar não acontece nada
O IF de onde está "$docker_help_iniciar" = "help" eu já tentei substituir por ELIF, e também tentei trocar || por -o
iniciar e docker_help_iniciar são a mesma pergunta em áreas diferentes do script
Podem olhar este trecho de código? Obrigado.


faz assim
if [ $iniciar == "t" -o $docker_help_iniciar == "t" ];then
echo "iniciar é t ou docker_help_iniciar é t"
fi




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

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

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



4. Re: IF com duas condições [RESOLVIDO]

hauck
hauck

(usa Nenhuma)

Enviado em 13/01/2019 - 20:58h


Mauriciodez escreveu:

hauck escreveu:

Em meu script está dando um erro na pergunta docker_help_iniciar, após o usuário dizer o que deseja executar não acontece nada
O IF de onde está "$docker_help_iniciar" = "help" eu já tentei substituir por ELIF, e também tentei trocar || por -o
iniciar e docker_help_iniciar são a mesma pergunta em áreas diferentes do script
Podem olhar este trecho de código? Obrigado.


faz assim
if [ $iniciar == "t" -o $docker_help_iniciar == "t" ];then
echo "iniciar é t ou docker_help_iniciar é t"
fi




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

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

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


Não deu certo, tentei de duas formas:
if [ $iniciar == "t" -o $docker_help_iniciar == "t" ];then
if [ "$iniciar" == "t" ] || [ "$docker_help_iniciar" == "t" ]

Não estou conseguindo fazer corretamente as duas condições em um if, se alguém puder ajudar, agradeço.



5. Re: IF com duas condições

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 13/01/2019 - 21:06h

hauck escreveu:

Não deu certo, tentei de duas formas:
if [ $iniciar == "t" -o $docker_help_iniciar == "t" ];then
if [ "$iniciar" == "t" ] || [ "$docker_help_iniciar" == "t" ]

Não estou conseguindo fazer corretamente as duas condições em um if, se alguém puder ajudar, agradeço.


velho .. não tem nada de errado ... eu já tinha testado
#!/bin/bash

echo -n "[k/t/help] "
read iniciar

echo -n " [k/t/help] "
read docker_help_iniciar

if [ $iniciar == "t" -o $docker_help_iniciar == "t" ];then
echo "iniciar é t ou docker_help_iniciar é t"
fi


EDIT: com as 3 opções

#!/bin/bash

read -p "[k/t/help] " iniciar

read -p " [k/t/help] " docker_help_iniciar

if [ $iniciar == "t" -o $docker_help_iniciar == "t" ];then
echo "iniciar é t ou docker_help_iniciar é t"

elif [ $iniciar == "k" -o $docker_help_iniciar == "k" ];then
echo "iniciar é k ou docker_help_iniciar é k"

elif [ $iniciar == "help" -o $docker_help_iniciar == "help" ];then
echo "iniciar é help ou docker_help_iniciar é help"

else
echo "Não tem 't','k' ou 'help'"

fi




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

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

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



6. Re: IF com duas condições [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 14/01/2019 - 09:10h

A única coisa q tá errada é q quando vc usa o test pra strings, vc deve fechar com dois colchetes, dessa forma:



#!/bin/bash

read -p "[k/t/help] " iniciar

read -p " [k/t/help] " docker_help_iniciar

if [[ $iniciar == "t" ]] || [[ $docker_help_iniciar == "t" ]];then
echo "iniciar é t ou docker_help_iniciar é t"

elif [[ $iniciar == "k" ]] || [[ $docker_help_iniciar == "k" ]];then
echo "iniciar é k ou docker_help_iniciar é k"

elif [[ $iniciar == "help" ]] || [[ $docker_help_iniciar == "help" ]];then
echo "iniciar é help ou docker_help_iniciar é help"

else
echo "Não tem 't','k' ou 'help'"

fi

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


7. Re: IF com duas condições [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 14/01/2019 - 12:21h

renato_pacheco escreveu:
A única coisa q tá errada é q quando vc usa o test pra strings, vc deve fechar com dois colchetes, dessa forma:


Isso aí era em um tipo específico de comparação ( =~ REGEX ) e no bash 3... não se usa mais, pelo menos não achei nada sobre o assunto

http://tldp.org/LDP/abs/html/bashver3.html#REGEXMATCHREF

OBS: o Script que mandei foi testado, não tem nada de errado com o meliante !!!

OBS: o seu script com colchetes duplos tb funciona aqui !!!

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

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

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



8. Re: IF com duas condições [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 14/01/2019 - 14:55h

Mauriciodez escreveu:

Isso aí era em um tipo específico de comparação ( =~ REGEX ) e no bash 3... não se usa mais, pelo menos não achei nada sobre o assunto

http://tldp.org/LDP/abs/html/bashver3.html#REGEXMATCHREF

OBS: o Script que mandei foi testado, não tem nada de errado com o meliante !!!

OBS: o seu script com colchetes duplos tb funciona aqui !!!



Hum, bom saber. Bash tem muitos recursos!

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


9. Re: IF com duas condições [RESOLVIDO]

hauck
hauck

(usa Nenhuma)

Enviado em 14/01/2019 - 20:34h

O código que todos vocês mandaram funciona, deve ter alguma coisa errada em outra parte do meu código que não vai.
É um script simples que inicia o Tor Browser e o Kali Linux via Docker, depois que o usuário responde docker_help_iniciar deveria iniciar o Tor ou o Kali.
Segue script completo:
http://dontpad.com/vivaolinux


10. Re: IF com duas condições [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 14/01/2019 - 21:23h

não tem como testar isso aqui ... mas me diga ... estão certos os nomes, é tor-ascii e kali-ascii mesmo ??

aqui isso iniciou o firefox de boa, substitua firefox por esses nomes aí e v se inicia
read -p "Digite F para iniciar o browser ->" OPT; if [ $OPT == "f" ];then firefox;fi 


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

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

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



11. Re: IF com duas condições

hauck
hauck

(usa Nenhuma)

Enviado em 14/01/2019 - 22:33h

Mauriciodez escreveu:

não tem como testar isso aqui ... mas me diga ... estão certos os nomes, é tor-ascii e kali-ascii mesmo ??

aqui isso iniciou o firefox de boa, substitua firefox por esses nomes aí e v se inicia
read -p "Digite F para iniciar o browser ->" OPT; if [ $OPT == "f" ];then firefox;fi 


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

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

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



Claro que dá pra testar na tua máquina o código completo, se não tiver o docker aí, ele só vai dar erro quando for pra rodar o Tor e o Kali e vai dar erro também na parte que o script verifica se o daemon do docker está ativo
tor-ascii, kali-ascii e docker-ascii são somente para enfeitar o script, isso vai mostrar uma imagem ou um logo onde estes nomes estiverem
As funções que iniciam os containers docker são docker-tor e docker-kali

Eu vou fazer uns testes com o if/elif
Os if e elif tem que ser assim:
se uma condição não for verdadeira, então execute a outra
se firefox está instalado ou se google-chrome está instalado execute o código


12. Re: IF com duas condições [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 15/01/2019 - 09:45h

A melhor forma de testar é habilitando o modo debug do bash:


$ bash -x seuscript.sh


Ou vc pode colocar no cabeçalho do script:


#!/bin/bash -x
...

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts