Testando variáveis [RESOLVIDO]

1. Testando variáveis [RESOLVIDO]

João Almeida e Silva
joao4linux

(usa Debian)

Enviado em 05/01/2012 - 01:35h

Olá pessoal, olhem este script:

[code]
#!/bin/bash
PING=$(ping -c 1 192.168.20.1 | grep "0% packet loss" | awk '{ print $6, $7 } ')
PORTA=$(route -n | grep 192.168.1.1 | awk '{ print $2 }')
if [ "$PING"="Linux" -a "$PORTA"="192.168.1.1" ]
then
echo "tudo certo"
elif [ "$PING"="0% packet" -a "$PORTA"="192.168.1.1" ]
then
echo "Veloz parado"
else
echo NAO BATE;
fi
[code]
O que tá acontecendo é que independente do valor das variáveis sempre a primeira condição é atendida. Ou seja vejam que o valor da variável $PING no primeiro if é Linux, o que diferente do valor da variável carregada. Logo deveria partir para o elif e isso não ta acontecendo. Alguém pode testar e dar uma luz?

Obrigado!


  


2. Re: Testando variáveis [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 05/01/2012 - 02:20h

Aqui:

if [ "$PING"="Linux" -a "$PORTA"="192.168.1.1" ]
then
echo "tudo certo"
elif [ "$PING"="0% packet" -a "$PORTA"="192.168.1.1" ]

Você está dizendo:

Se PING recebe LINUX e PORTA recebe 192.168.1.1 faça

Para fazer a comparação deve-se colocar espaço entre os valores, ficando:

if [ "$PING" = "Linux" -a "$PORTA" = "192.168.1.1" ]
then
echo "tudo certo"
elif [ "$PING" = "0% packet" -a "$PORTA" = "192.168.1.1" ]

Ou ainda


if [ "$PING" == "Linux" -a "$PORTA" == "192.168.1.1" ]
then
echo "tudo certo"
elif [ "$PING" == "0% packet" -a "$PORTA" == "192.168.1.1" ]



3. Re: Testando variáveis [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 05/01/2012 - 15:09h

Adicionando um comentário ao que o amigo rai3mb lhe disse:

Tenha em mente que o sinal '=' ( igualdade ) em programação equivale a atribuição de valores a uma variável.
Por exemplo:
 VAR=2;  


Para comparações de valores mas especificamente no caso do shell script, o sinal para comparação de equivalência entre duas variáveis é '==' duas igualdades.


if [ $VAR == $VAR1 ]
then
echo 'Os valores são iguais'
fi

Tendo isso em mente as possibilidades de erros serão diminuídas.
Boa sorte!


4. Agradecimento!

João Almeida e Silva
joao4linux

(usa Debian)

Enviado em 06/01/2012 - 02:22h

Olá rai3mb,

Cara o problema estava exatamente na falta dos espaços, que falta de atenção a minha. Mas para isso que existe esta lista fantástica!!!

Problema resolvido, muito obrigado mesmo!


5. Re: Testando variáveis [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 06/01/2012 - 02:37h

Beleza, agora basta marcar o tópico como resolvido ;-)

Boa noite






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts