Utilização de IF, AND, OU e e alimentaçãop de variáveis [RESOLVIDO]

1. Utilização de IF, AND, OU e e alimentaçãop de variáveis [RESOLVIDO]

Ramon Rafael Bortholin
rbortholin

(usa Debian)

Enviado em 23/08/2012 - 15:04h

Galera.. .estou com dúvida sobre o script abaixo....


#!/bin/bash

#Script para envio do resultado do comando hddtemp /dev/sda para o e-mail william.araujo@dthi.com.br e ramon.bortholin@dthi.com.br - Criado por Ramon Bortholin - 16/08/12.

#Variaveis
temperatura=$(hddtemp /dev/sda | cut -d: -f3)
data=$(date | cut -d: -f1,2,4)
hora='date +%T'
manha=04:59:59
tarde=12:59:59
noite=17:59:59


### Condicao para envio de email para o analista Ramon Bortholin, criado por Ramon Bortholin em 23/08/2012 ###
if [ "$hora" > "$manha" ] && [ "$hora" < "$tarde" ];
then
echo -e "Ramon, bom dia. \n \nA temperatura do HD esta por volta de $temperatura em $data \n \nAtenciosamente, \n \nEquipe de TI - DTHi" | mutt -s "Temperatura Do HD em $data =$temperatura" ramon.bortholin@dthi.com.br

elif [ "$hora" > "$tarde" ] && [ "$hora" < "$noite" ];
then
echo -e "Ramon, boa tarde. \n \nA temperatura do HD esta por volta de $temperatura em $data \n \nAtenciosamente, \n \nEquipe de TI - DTHi" | mutt -s "Temperatura Do HD em $data =$temperatura" ramon.bortholin@dthi.com.br

elif [ "$hora" > "$noite" ] && [ "$hora" < "$manha" ];
then
echo -e "Ramon, boa noite. \n \nA temperatura do HD esta por volta de $temperatura em $data \n \nAtenciosamente, \n \nEquipe de TI - DTHi" | mutt -s "Temperatura Do HD em $data =$temperatura" ramon.bortholin@dthi.com.br
else

echo -e "ERRO NA CONDICAO " | mutt -s "Houve algum erro na condicao para controle de temperatura! \n \nEntre em contato com a area de TI DTHi \n \nRamon - 11 96479-0269" ramon.bortholin@dthi.com.br, william.araujo@dthi.com.br, jorge.gomes@dthi.com.br
fi





A dúvida é.... Pq está sempre enviando o email de "bom dia" independente da hora do dia ? este script é automático e envia de hora em hora.... Alguem da um help ai.. já tentei alimentar a variavel $hora utilzando $(), '', "", ´´ e de nenhum jeito aparentemente está rolando...

Vlw ae galera !


  


2. MELHOR RESPOSTA

cr0n
_di0

(usa FreeBSD)

Enviado em 23/08/2012 - 16:37h

De certa forma o jpgnulinux está certo, você está comparando string, quando a comparação deveria ser de forma numérica, ficaria mais ou menos assim:


#!/bin/bash


#Script para envio do resultado do comando hddtemp /dev/sda para o e-mail william.araujo@dthi.com.br e ramon.bortholin@dthi.com.br - Criado por Ramon Bortholin - 16/08/12.

#Variaveis
data=$(date | cut -d: -f1,2,4)
hora=$(date +%T | cut -f 1 -d:)
manha=04
tarde=12
noite=17


### Condicao para envio de email para o analista Ramon Bortholin, criado por Ramon Bortholin em 23/08/2012 ###
if [ $hora -ge $manha ] && [ $hora -le $tarde ];
then
echo -e "Ramon, bom dia. \n"

elif [ $hora -ge $tarde ] && [ $hora -le $noite ];
then
echo -e "Ramon, boa tarde. \n"

elif [ $hora -ge $noite ];
then
echo -e "Ramon, boa noite. \n"
else

echo -e "ERRO NA CONDICAO "
fi


Esse erro na condição, é meio sem lógica, mas você quem decide o que fazer com ele. Só estamos enfatizando a maneira de comparar de forma numérica usando SS.


3. Re: Utilização de IF, AND, OU e e alimentaçãop de variáveis [RESOLVIDO]

João Paulo
Impetto

(usa Debian)

Enviado em 23/08/2012 - 15:22h

Boa tarde, veja se é isso:


hora=$(date +%T | cut -f 1 -d:)


Abraço.


4. Re: Utilização de IF, AND, OU e e alimentaçãop de variáveis [RESOLVIDO]

Ramon Rafael Bortholin
rbortholin

(usa Debian)

Enviado em 23/08/2012 - 15:25h

Se eu entendi bem esse comando vai cortar os minutos e trazer só as horas, porém nao precisa.. e soutra se eu alimento avariável desse jeito, quando chamo pelo comando "$variavel" é retornado a hora seguido da mensagem command not found


5. Re: Utilização de IF, AND, OU e e alimentaçãop de variáveis [RESOLVIDO]

Ramon Rafael Bortholin
rbortholin

(usa Debian)

Enviado em 24/08/2012 - 08:44h

_di0 escreveu:

De certa forma o jpgnulinux está certo, você está comparando string, quando a comparação deveria ser de forma numérica, ficaria mais ou menos assim:


#!/bin/bash


#Script para envio do resultado do comando hddtemp /dev/sda para o e-mail william.araujo@dthi.com.br e ramon.bortholin@dthi.com.br - Criado por Ramon Bortholin - 16/08/12.

#Variaveis
data=$(date | cut -d: -f1,2,4)
hora=$(date +%T | cut -f 1 -d:)
manha=04
tarde=12
noite=17


### Condicao para envio de email para o analista Ramon Bortholin, criado por Ramon Bortholin em 23/08/2012 ###
if [ $hora -ge $manha ] && [ $hora -le $tarde ];
then
echo -e "Ramon, bom dia. \n"

elif [ $hora -ge $tarde ] && [ $hora -le $noite ];
then
echo -e "Ramon, boa tarde. \n"

elif [ $hora -ge $noite ];
then
echo -e "Ramon, boa noite. \n"
else

echo -e "ERRO NA CONDICAO "
fi


Esse erro na condição, é meio sem lógica, mas você quem decide o que fazer com ele. Só estamos enfatizando a maneira de comparar de forma numérica usando SS.


Então, coloquei a seguinte linha e tal e fiz a alteração da variável - hora=$(date +%T | cut -f 1 -d:)


if [ $hora -ge $manha ] && [ $hora -le $tarde ];


porem gera o erro " -ge: unary operator expected


6. Re: Utilização de IF, AND, OU e e alimentaçãop de variáveis [RESOLVIDO]

cr0n
_di0

(usa FreeBSD)

Enviado em 24/08/2012 - 10:09h

Essa mensagem de erro significa que você está comparando certo valor com outra variável indefinida, certifique-se que a variável 'hora', esteja com um valor definido, talvez somente seja suficiente usar:

hora=$(date +"%H");

Logo após, faça um echo em $hora e veja se armazenou realmente o valor da hora correta.


7. Re: Utilização de IF, AND, OU e e alimentaçãop de variáveis [RESOLVIDO]

Ramon Rafael Bortholin
rbortholin

(usa Debian)

Enviado em 24/08/2012 - 10:16h

Aparentemente funfou... vou esperar entrar na condição da tarde... =]

Me diz uma coisa. .. pq vc colocou aspas duplas no parâmetro +%H ??? Esse parâmetro eu sei que pega só a hora, mas as aspas é novidade para mim.

Vlw ae !


8. Re: Utilização de IF, AND, OU e e alimentaçãop de variáveis [RESOLVIDO]

cr0n
_di0

(usa FreeBSD)

Enviado em 24/08/2012 - 10:28h

rbortholin escreveu:

Aparentemente funfou... vou esperar entrar na condição da tarde... =]



Se o sistema em questão não estiver em produção, você pode antecipar os testes, setando
na linha de comando ou através do modo gráfico, a hora para tarde, manhã, noite, enfim, fica
a seu critério a forma que deseja realizar o teste, só uma opinião.


Me diz uma coisa. .. pq vc colocou aspas duplas no parâmetro +%H ??? Esse parâmetro eu sei que pega só a hora, mas as aspas é novidade para mim.


Usa-se aspas pelo fato de se tratar de uma string, string essa que terá sua sequência interpretada juntamente com seus formatos de controle, como no caso de %H -> hour, por isso a
necessidade das aspas.


Vlw ae !


Disponha.



9. Re: Utilização de IF, AND, OU e e alimentaçãop de variáveis [RESOLVIDO]

Ramon Rafael Bortholin
rbortholin

(usa Debian)

Enviado em 24/08/2012 - 10:31h

_di0 escreveu:

rbortholin escreveu:

Aparentemente funfou... vou esperar entrar na condição da tarde... =]



Se o sistema em questão não estiver em produção, você pode antecipar os testes, setando
na linha de comando ou através do modo gráfico, a hora para tarde, manhã, noite, enfim, fica
a seu critério a forma que deseja realizar o teste, só uma opinião.


Me diz uma coisa. .. pq vc colocou aspas duplas no parâmetro +%H ??? Esse parâmetro eu sei que pega só a hora, mas as aspas é novidade para mim.


Usa-se aspas pelo fato de se tratar de uma string, string essa que terá sua sequência interpretada juntamente com seus formatos de controle, como no caso de %H -> hour, por isso a
necessidade das aspas.


Vlw ae !


Disponha.


Saquei bro !!!!

Eh produção, não vou poder alterar agora... mas ta perto de virar já !!!..

Por enquanto muito obrigado e assim que tiver retorno eu fecho o topico.


10. Re: Utilização de IF, AND, OU e e alimentaçãop de variáveis [RESOLVIDO]

cr0n
_di0

(usa FreeBSD)

Enviado em 24/08/2012 - 12:12h

Eu deixei um teste aqui também, e por falta de atenção, eu fiz uma lógica errada na comparação.
Precisa trocar essas linhas:


[ $hora -le $tarde ];


Por


$hora -lt $tarde



Pois quando chegar 12, a comparação será verdade e ainda vai estar como manhã, o mesmo vale para noite.

Portanto, mude de -le : (less or equal), menor ou igual, para -lt : (less than), menor que, tanto para tarde, quanto para noite.


11. Re: Utilização de IF, AND, OU e e alimentaçãop de variáveis [RESOLVIDO]

Ramon Rafael Bortholin
rbortholin

(usa Debian)

Enviado em 24/08/2012 - 12:20h

_di0 escreveu:

Eu deixei um teste aqui também, e por falta de atenção, eu fiz uma lógica errada na comparação.
Precisa trocar essas linhas:


[ $hora -le $tarde ];


Por


$hora -lt $tarde



Pois quando chegar 12, a comparação será verdade e ainda vai estar como manhã, o mesmo vale para noite.

Portanto, mude de -le : (less or equal), menor ou igual, para -lt : (less than), menor que, tanto para tarde, quanto para noite.


BRO,

Aparentemente funcionou o bang... muito obrigado !!!!!

Esse negócio da comparação vai ser importante para mim

Obrigado msmo !


12. Re: Utilização de IF, AND, OU e e alimentaçãop de variáveis [RESOLVIDO]

Ramon Rafael Bortholin
rbortholin

(usa Debian)

Enviado em 04/09/2012 - 08:09h

cara, tive outra dúvida.......

se eu quiser colocar uma condição para me mandar email só se a temperatura for maior que 29 ?

Eu criei a variável $tempmax com o valor 29... e estou comparando antes do if dos e-mails

if [ $temperatura > $tempmax];
then

#[IF DOS EMAILS]

e estou fechando os dois IF's no final.

Não é apresentado erro nenhum, pporém a primeira condição aparentemente não funciona... pois continua mandando email, mesmo estando abaixo de 29 graus.





_di0 escreveu:

Eu deixei um teste aqui também, e por falta de atenção, eu fiz uma lógica errada na comparação.
Precisa trocar essas linhas:


[ $hora -le $tarde ];


Por


$hora -lt $tarde



Pois quando chegar 12, a comparação será verdade e ainda vai estar como manhã, o mesmo vale para noite.

Portanto, mude de -le : (less or equal), menor ou igual, para -lt : (less than), menor que, tanto para tarde, quanto para noite.








01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts