Scrip do turno [RESOLVIDO]

1. Scrip do turno [RESOLVIDO]

carlos eduardo da silva braga
cadu405

(usa Outra)

Enviado em 05/05/2020 - 22:46h

Boa noite!
fiz um script para mostrar em qual periodo do dia estamos, porém ele não printa o resultado e também não aparece nenhum erro.
segue o código a baixo:
#!/bin/bash
hora=$(date + %H)
if [ $hora -ge 06 ] && [ $hora -le 12 ];
then
echo "dia"
elif [ $hora -ge 13 ] && [ $hora -le 18 ];
then
echo "tarde"
elif [ $hora -ge 17 ] && [ $hora -le 05 ];
then
echo "noite"
fi


  


2. Re: Scrip do turno

Matheus
pylm

(usa Gentoo)

Enviado em 05/05/2020 - 23:10h

Cara, não tem como ser maior que 17 e menor que 5 ao mesmo tempo.


elif [ $hora -ge 17 ] || [ $hora -le 05 ];


Parece funcionar com essa modificação, o || é operador "ou".


3. Re: Scrip do turno

João Cláudio de Alcântara
aguamole

(usa Lubuntu)

Enviado em 06/05/2020 - 00:31h

#!/bin/bash

hora=$(date +%H) # A que esta o erro não tem espeço entre o + e o %.

if [ $hora -ge 06 ] && [ $hora -le 12 ]; then
echo "dia"
elif [ $hora -ge 13 ] && [ $hora -le 18 ]; then
echo "tarde"
elif [ $hora -ge 19 ] || [ $hora -le 05 ]; then # A que esta o erro maior que 17 && trocado.
echo "noite"
fi


Testa ai se der erro na noite pode ser necessário colocar o 00 e o 23.
Mais a manha é das 00:00 ate as 12:00 a noite é só das 18:00 ate as 23:59
As pessoas também diz que das 00:00 as 5:59 é madrugada.
Fonte: https://pt.wikipedia.org/wiki/Per%C3%ADodos_do_dia

CPU i5-8400 GTX 750 SofRaid 4xSSD 16GB DDR4 mesmo assim uso Lubuntu.


4. Re: Scrip do turno [RESOLVIDO]

manly man
manInBlack

(usa Outra)

Enviado em 06/05/2020 - 14:14h

como as horas geradas são números inteiros, dá para usar o teste aritmético
acho que ele vai encontrar problemas quando o horário for 08 ou 09 horas (limitação do bash), por exemplo, com o zero na frente
então tem uma mágica para retirar esse 0 da cabeça do valor


#!/bin/bash

hora=$(date +%H)
hora=${hora#0}

turno=madrugada

(( hora >= 6 )) && turno=manhã

(( hora >= 12 )) && turno=tarde

(( hora >= 18 )) && turno=noite


echo $turno




5. Re: Scrip do turno [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/05/2020 - 18:51h

manInBlack escreveu:

como as horas geradas são números inteiros, dá para usar o teste aritmético
acho que ele vai encontrar problemas quando o horário for 08 ou 09 horas (limitação do bash), por exemplo, com o zero na frente
então tem uma mágica para retirar esse 0 da cabeça do valor


#!/bin/bash

hora=$(date +%H)
hora=${hora#0}

turno=madrugada

(( hora >= 6 )) && turno=manhã

(( hora >= 12 )) && turno=tarde

(( hora >= 18 )) && turno=noite


echo $turno


Boa noite, manInBlack.
Para eliminar o "0" das horas menores que 10, use:
date +%-H
Não é necessário a "magica", rsrsrsrs
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


6. Re: Scrip do turno [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/05/2020 - 19:19h


cadu405 escreveu:

Boa noite!
fiz um script para mostrar em qual periodo do dia estamos, porém ele não printa o resultado e também não aparece nenhum erro.
segue o código a baixo:
#!/bin/bash
hora=$(date + %H)
if [ $hora -ge 06 ] && [ $hora -le 12 ];
then
echo "dia"
elif [ $hora -ge 13 ] && [ $hora -le 18 ];
then
echo "tarde"
elif [ $hora -ge 17 ] && [ $hora -le 05 ];
then
echo "noite"
fi

Além do erro no condicional, já citado,
Tem um erro na atribuição da variável "hora",
Tire o espaço entre o + e a %,
date +%-H

Sugestão com o "case":
Obs: Para efeitos de testes, o "Dia" foi dividido em 4 períodos:
Manhã, Tarde, Noite e Madrugada.
#!/bin/bash

hora=$(date +%H);
#Para testar, "descomente" o "Laço"
#for hora in {00..23};do
case $hora in
0[0-5]) STT="Madrugada" ;;
0[6-9]|1[01]) STT="Matutino/Manhã" ;;
1[2-7]) STT="Vespertino/Tarde" ;;
1[89]|2[0-3]) STT="Noturno/Noite" ;;
esac
printf "H: $hora => Período: ${STT}\n"
#done


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