Duvidas Sobre Comparação de texto

1. Duvidas Sobre Comparação de texto

Linex Hacking Lammer
LinexHacking

(usa Kali)

Enviado em 06/02/2020 - 22:10h

Então O Objetivo deste código e somar o valor do pc1 que e 5 e do pc2 que e 10 ate ai ele funciona direitinho mas na hora que chega de informar se a pessoa digitou errado da erro no script da alguma infomação errada e as vezes ele aparecem lugares lugares que não e para aparecer exemplo: o resultado e pc1 ligado pc2 desligado ele informa tudo certo o resultado e 5 mas em baixo tbm informa os primeiros ifs tipo a algo foi digitado no pc1 ou no 2 eu ja fiz de varios jeitos com else e etc mas nenhum funciona

[/code]
#!/bin/bash
echo "Qual as situaçoes dos notebooks abaixo"
echo

echo "PC1"
read pc1
echo

echo ""PC2"
read pc2
echo


if [ "pc1" != "ligado" -a "pc1" != "desligado" ]; then
echo "Informaçao do pc1 incorreta"
sleep 2
exit
fi

if [ "$pc2" != "ligado" -a "pc2" != "desligado" ]; then
echo "informaçao do pc2 incorreta"
sleep 2
exit
fi

if [ "$pc1" == "ligado" ] && [ "$pc2" == "desligado" ]; then
echo "O resultado e 5"
fi

if [ "$pc1" == "desligado" ] && [ "$pc2" == "ligado" ]; then
echo "O resultado e 10"
fi

if [ "$pc1" == "ligado" ] && [ "$pc2" == "ligado" ]; then
echo "O resultado e 15"
fi

if [ "$pc1" == "desligado" ] && [ "$pc2" == "desligado" ]; then
echo "o resultado 0"
fi
[/code]


  


2. Re: Duvidas Sobre Comparação de texto

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/02/2020 - 23:03h

LinexHacking escreveu:

Então O Objetivo deste código e somar o valor do pc1 que e 5 e do pc2 que e 10 ate ai ele funciona direitinho mas na hora que chega de informar se a pessoa digitou errado da erro no script da alguma infomação errada e as vezes ele aparecem lugares lugares que não e para aparecer exemplo: o resultado e pc1 ligado pc2 desligado ele informa tudo certo o resultado e 5 mas em baixo tbm informa os primeiros ifs tipo a algo foi digitado no pc1 ou no 2 eu ja fiz de varios jeitos com else e etc mas nenhum funciona

[/code]
#!/bin/bash
echo "Qual as situaçoes dos notebooks abaixo"
echo

echo "PC1"
read pc1
echo

echo ""PC2"
read pc2
echo


if [ "pc1" != "ligado" -a "pc1" != "desligado" ]; then
echo "Informaçao do pc1 incorreta"
sleep 2
exit
fi

if [ "$pc2" != "ligado" -a "pc2" != "desligado" ]; then
echo "informaçao do pc2 incorreta"
sleep 2
exit
fi

if [ "$pc1" == "ligado" ] && [ "$pc2" == "desligado" ]; then
echo "O resultado e 5"
fi

if [ "$pc1" == "desligado" ] && [ "$pc2" == "ligado" ]; then
echo "O resultado e 10"
fi

if [ "$pc1" == "ligado" ] && [ "$pc2" == "ligado" ]; then
echo "O resultado e 15"
fi

if [ "$pc1" == "desligado" ] && [ "$pc2" == "desligado" ]; then
echo "o resultado 0"
fi
[/code]

No 1ª if falta o $ nas variáveis.
no 2º if, falta o $ em pc2
Para comparar strings, use:
if [ "$pc1" = "ligado" ]
e não "=="
Sugestão:
[[ "$pc1" =~ (ligado|desligado) ]] && echo Certo || echo Errado 

A lógica esta errada:
if [ "pc1" != "ligado" -a "pc1" != "desligado" ];
O correto é,
if [ "pc1" != "ligado" -o "pc1" != "desligado" ];
Ligado ou Desligado

Script otimizado:

#!/bin/bash

echo -e "Qual as situaçoes dos notebooks abaixo\n";
read -p "Situação do PC1: " pc1;
if [[ "$pc1" =~ (ligado|desligado) ]];then
[ "$pc1" = "ligado" ] && v1=5 || v1=0
else
echo -e "\nErrado\nSaindo...";exit
fi

read -p "Situação do PC2: " pc2;
if [[ "$pc2" =~ (ligado|desligado) ]];then
[ "$pc2" = "ligado" ] && v2=10 || v2=0
else
echo -e "\nErrado\nSaindo..." ;exit
fi

echo -e "\nO resultato é: $((v1+v2))\n"

______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts