Foros del Web » Administración de Sistemas » Unix / Linux »

Comprobar fecha

Estas en el tema de Comprobar fecha en el foro de Unix / Linux en Foros del Web. Hola, estoy creando un script en el cual debe usar una fecha introducida por el usuario, así que he de cercionarme de que es válida. ...
  #1 (permalink)  
Antiguo 02/06/2008, 02:27
 
Fecha de Ingreso: febrero-2005
Ubicación: Valencia
Mensajes: 101
Antigüedad: 19 años, 10 meses
Puntos: 15
Comprobar fecha

Hola, estoy creando un script en el cual debe usar una fecha introducida por el usuario, así que he de cercionarme de que es válida.
Después de introducir la fecha, lo compruebo, pero algo debo de tener mal, puesto que nunca me coge la fecha como válida

Código:
echo "Fecha a la que quieres restaurar el sistema de GForge (en formato dia-mes-anyo (dd-mm-aaaa)): "
read FECHA_RESTAURA

echo $FECHA_RESTAURA

until ["00" < ${FECHA_RESTAURA:0:2} && ${FECHA_RESTAURA:0:2} < "32" && "00" < ${FECHA_RESTAURA:3:2} && ${FECHA_RESTAURA:3:2} < "13" && "2007" < ${FECHA_RESTAURA:6:4} && ${FECHA_RESTAURA:6:4} < "3001"];
do
       echo "La fecha no es valida, tiene que ser en formato dia-mes-anyo (dd-mm-yyyy)"
       read FECHA_RESTAURA
done

echo "Fecha valida"
¿Alguna idea?
Lo mejor sería una función del tipo isDate(), pero no existe . Gracias
  #2 (permalink)  
Antiguo 25/06/2008, 05:39
 
Fecha de Ingreso: febrero-2005
Ubicación: Valencia
Mensajes: 101
Antigüedad: 19 años, 10 meses
Puntos: 15
Respuesta: Comprobar fecha

He hecho algo más, pero nada, no tira...

Código:
        echo "Fecha a la que quieres restaurar el sistema de GForge (en formato dia-mes-anyo (dd-mm-aaaa)): "
        read FECHA_RESTAURA
        #FECHA_RESTAURA="20-06-2008"

        echo La fecha elegida para restaurar GForge es: $FECHA_RESTAURA

        until ["00" < `expr substr $FECHA_RESTAURA 1 2` && `expr substr $FECHA_RESTAURA 1 2` < "32" && "00" < `expr substr $FECHA_RESTAURA 4 2` && `expr substr $FECHA_RESTAURA 4 2` < "13" && "2007" < `expr substr $FECHA_RESTAURA 7 4` && `expr substr $FECHA_RESTAURA 7 4` < "3001"];
        do
                echo "La fecha no es valida, tiene que ser en formato dia-mes-anyo (dd-mm-yyyy)"
                read FECHA_RESTAURA
        done

        echo "Fecha valida"
Pero me da un error:
Fecha a la que quieres restaurar el sistema de GForge (en formato dia-mes-anyo (dd-mm-aaaa)):
88-88-8888
La fecha elegida para restaurar GForge es: 88-88-8888
./prueba_restaurar_GForge_final.sh: line 38: 88: No existe el fichero o el directorio
La fecha no es valida, tiene que ser en formato dia-mes-anyo (dd-mm-yyyy)

La línea 38 es:
Código:
until ["00" < `expr substr $FECHA_RESTAURA 1 2` && `expr substr $FECHA_RESTAURA 1 2` < "32" && "00" < `expr substr $FECHA_RESTAURA 4 2` && `expr substr $FECHA_RESTAURA 4 2` < "13" && "2007" < `expr substr $FECHA_RESTAURA 7 4` && `expr substr $FECHA_RESTAURA 7 4` < "3001"];
¿Cual es el fichero que no existe?

Estoy un poco perdido... :S
  #3 (permalink)  
Antiguo 26/06/2008, 05:41
 
Fecha de Ingreso: febrero-2005
Ubicación: Valencia
Mensajes: 101
Antigüedad: 19 años, 10 meses
Puntos: 15
Respuesta: Comprobar fecha

Bueno, ya tengo algo corregido, pero me sigue dando el mismo error...
El falo que he corregido, es que si es un if anidado con otras sentencias, and o or, hay que poner cada una entre []. ej:
Código:
if [ ... ] && [ ... ] || [ ... ];
Código:
until [ "00" < `expr substr $FECHA_RESTAURA 1 2` ] && [ `expr substr $FECHA_RESTAURA 1 2` < "32" ] && [ "00" < `expr substr $FECHA_RESTAURA 4 2` ] && [ `expr substr $FECHA_RESTAURA 4 2` < "13" ] && [ "2007" < `expr substr $FECHA_RESTAURA 7 4`] && [ `expr substr $FECHA_RESTAURA 7 4` < "3001" ];
¿Cual es el fichero que no existe?

Estoy un poco perdido... :S
  #4 (permalink)  
Antiguo 26/06/2008, 09:35
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 5 meses
Puntos: 29
Respuesta: Comprobar fecha

Pues no sé si sea de mucha ayuda lo que te voy a decir pero cuando quieres hacer este tipo de cosas es mejor un lenguaje muchisimo mas potente como es perl, el cual trae librerias especiales para este tipo de cosas que te ahorran mucho tiempo a la hora de realizar actividades complejas.

Perdona por no ser de mas ayuda pero ahora ando algo ocupado para entender tu código ;)

Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #5 (permalink)  
Antiguo 30/06/2008, 01:57
 
Fecha de Ingreso: febrero-2005
Ubicación: Valencia
Mensajes: 101
Antigüedad: 19 años, 10 meses
Puntos: 15
Respuesta: Comprobar fecha

Cita:
Iniciado por Koveart Ver Mensaje
Pues no sé si sea de mucha ayuda lo que te voy a decir pero cuando quieres hacer este tipo de cosas es mejor un lenguaje muchisimo mas potente como es perl, el cual trae librerias especiales para este tipo de cosas que te ahorran mucho tiempo a la hora de realizar actividades complejas.

Perdona por no ser de mas ayuda pero ahora ando algo ocupado para entender tu código ;)

Saludos
Ya, pero estoy haciendo un script en bash que restaure los datos de una aplicación, y solo necesitaba hacer que comprobara eso, si no, le haría un programita en C que lo hiciera, pero ya que lo tengo todo hecho en bash...

Gracias
  #6 (permalink)  
Antiguo 01/07/2008, 05:25
 
Fecha de Ingreso: febrero-2005
Ubicación: Valencia
Mensajes: 101
Antigüedad: 19 años, 10 meses
Puntos: 15
Respuesta: Comprobar fecha

Cita:
Iniciado por Souf Ver Mensaje
Hola, estoy creando un script en el cual debe usar una fecha introducida por el usuario, así que he de cercionarme de que es válida.
Después de introducir la fecha, lo compruebo, pero algo debo de tener mal, puesto que nunca me coge la fecha como válida

Código:
echo "Fecha a la que quieres restaurar el sistema de GForge (en formato dia-mes-anyo (dd-mm-aaaa)): "
read FECHA_RESTAURA

echo $FECHA_RESTAURA

until ["00" < ${FECHA_RESTAURA:0:2} && ${FECHA_RESTAURA:0:2} < "32" && "00" < ${FECHA_RESTAURA:3:2} && ${FECHA_RESTAURA:3:2} < "13" && "2007" < ${FECHA_RESTAURA:6:4} && ${FECHA_RESTAURA:6:4} < "3001"];
do
       echo "La fecha no es valida, tiene que ser en formato dia-mes-anyo (dd-mm-yyyy)"
       read FECHA_RESTAURA
done

echo "Fecha valida"
¿Alguna idea?
Lo mejor sería una función del tipo isDate(), pero no existe . Gracias
Bueno, ya lo he arreglado, simplemente había que comparar con -lt, no con <:
Código:
until [ "00" -lt `expr substr $FECHA_RESTAURA 1 2` ] && [ `expr substr $FECHA_RESTAURA 1 2` -lt "32" ] && [ "00" -lt `expr substr $FECHA_RESTAURA 4 2` ] && [ `expr substr $FECHA_RESTAURA 4 2` -lt "13" ] && [ "2007" -lt `expr substr $FECHA_RESTAURA 7 4` ] && [ `expr substr $FECHA_RESTAURA 7 4` -lt "3001" ] && [ ${#FECHA_RESTAURA} = 10 ]; do

       echo "La fecha no es valida, tiene que ser en formato dia-mes-anyo (dd-mm-yyyy)"
       read FECHA_RESTAURA

done
¡Bravo POCOYO!


jejeje
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:28.