Variable problemática
Publicado por epicteto (18 intervenciones) el 20/04/2021 10:41:24
Hola
He hecho un pequeño script, que arranca desde cron, para que asigne a una variable determinados valores que posteriormente se analizan. Esto ocurre a determinadas horas del día, concretamente:
Todo funciona bien excepto lo que debería ocurrir a las 9 ó las 9,30 de la mañana. Por algún motivo que se me escapa los dos primeros condicionales que tienen estas horas no actúan. Sin embargo las horas que están en la misma líne, las 19,00 y las 19,20 sí lo hacen sin problemas. La variable $hora toma su valor de:
He podido comprobar que a esa variable a las 9 se le asigna el valor 09, no 9... pero es indiferente que en el condicional IF ponga 9 ó 09, nada cambia. Lo mismo ocurre a la 1, pero a esa hora todo funciona perfectamente. El resto de las horas tienen 2 dígitos y como digo todo funciona bien.
En definitiva, todo parece apuntar a que hay un problema con asignar a la variable $hora el valor 9. En otras partes del código ocurren cosas a las 8 y funcionan perfectamente
He comprobado que cron inicia el script correctamente a la hora que debe, por lo que el problema está en el propio script.
Me estoy planteando sustituir este bloque de condicionales por un CASE a ver si se soluciona.. pero me fastidia no saber la causa del problema
Saludos
He hecho un pequeño script, que arranca desde cron, para que asigne a una variable determinados valores que posteriormente se analizan. Esto ocurre a determinadas horas del día, concretamente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
if [[ $hora -eq 9 && $minutos -eq 00 ]] || [[ $hora -eq 19 && $minutos -eq 00 ]]; then
indice=0
elif [[ $hora -eq 9 && $minutos -eq 30 ]] || [[ $hora -eq 19 && $minutos -eq 20 ]]; then
indice=1
elif [[ $hora -eq 10 && $minutos -eq 00 ]] || [[ $hora -eq 19 && $minutos -eq 40 ]]; then
indice=2
elif [[ $hora -eq 10 && $minutos -eq 30 ]] || [[ $hora -eq 20 && $minutos -eq 00 ]]; then
indice=3
elif [[ $hora -eq 11 && $minutos -eq 00 ]] || [[ $hora -eq 20 && $minutos -eq 20 ]]; then
indice=4
elif [[ $hora -eq 11 && $minutos -eq 30 ]] || [[ $hora -eq 20 && $minutos -eq 40 ]]; then
indice=5
elif [[ $hora -eq 12 && $minutos -eq 00 ]] || [[ $hora -eq 21 && $minutos -eq 00 ]]; then
indice=6
elif [[ $hora -eq 12 && $minutos -eq 30 ]] || [[ $hora -eq 21 && $minutos -eq 20 ]]; then
indice=7
elif [[ $hora -eq 13 && $minutos -eq 00 ]] || [[ $hora -eq 21 && $minutos -eq 40 ]]; then
indice=8
elif [[ $hora -eq 13 && $minutos -eq 30 ]] || [[ $hora -eq 22 && $minutos -eq 00 ]]; then
indice=9
elif [[ $hora -eq 14 && $minutos -eq 00 ]] || [[ $hora -eq 22 && $minutos -eq 20 ]]; then
indice=10
elif [[ $hora -eq 14 && $minutos -eq 30 ]] || [[ $hora -eq 22 && $minutos -eq 40 ]]; then
indice=11
elif [[ $hora -eq 15 && $minutos -eq 00 ]] || [[ $hora -eq 23 && $minutos -eq 00 ]]; then
indice=12
elif [[ $hora -eq 15 && $minutos -eq 30 ]] || [[ $hora -eq 23 && $minutos -eq 20 ]]; then
indice=13
elif [[ $hora -eq 16 && $minutos -eq 00 ]] || [[ $hora -eq 23 && $minutos -eq 40 ]]; then
indice=14
elif [[ $hora -eq 16 && $minutos -eq 30 ]] || [[ $hora -eq 00 && $minutos -eq 00 ]]; then
indice=15
elif [[ $hora -eq 17 && $minutos -eq 00 ]] || [[ $hora -eq 00 && $minutos -eq 20 ]]; then
indice=16
elif [[ $hora -eq 17 && $minutos -eq 30 ]] || [[ $hora -eq 00 && $minutos -eq 40 ]]; then
indice=17
elif [[ $hora -eq 18 && $minutos -eq 00 ]] || [[ $hora -eq 1 && $minutos -eq 00 ]]; then
indice=18
elif [[ $hora -eq 18 && $minutos -eq 30 ]] || [[ $hora -eq 1 && $minutos -eq 30 ]]; then
indice=19
fi
Todo funciona bien excepto lo que debería ocurrir a las 9 ó las 9,30 de la mañana. Por algún motivo que se me escapa los dos primeros condicionales que tienen estas horas no actúan. Sin embargo las horas que están en la misma líne, las 19,00 y las 19,20 sí lo hacen sin problemas. La variable $hora toma su valor de:
1
2
hora=`date +%H`
minutos=`date +%M`
He podido comprobar que a esa variable a las 9 se le asigna el valor 09, no 9... pero es indiferente que en el condicional IF ponga 9 ó 09, nada cambia. Lo mismo ocurre a la 1, pero a esa hora todo funciona perfectamente. El resto de las horas tienen 2 dígitos y como digo todo funciona bien.
En definitiva, todo parece apuntar a que hay un problema con asignar a la variable $hora el valor 9. En otras partes del código ocurren cosas a las 8 y funcionan perfectamente
He comprobado que cron inicia el script correctamente a la hora que debe, por lo que el problema está en el propio script.
Me estoy planteando sustituir este bloque de condicionales por un CASE a ver si se soluciona.. pero me fastidia no saber la causa del problema
Saludos
Valora esta pregunta


0