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

[SOLUCIONADO] Validación de Formato fecha ShellScript

Estas en el tema de Validación de Formato fecha ShellScript en el foro de Unix / Linux en Foros del Web. Hola amigos, Mi nombre es Francisco y me encuentro con un problema, soy programador y trabajo diseñando aplicaciones en java pero ahora llego una peticion ...
  #1 (permalink)  
Antiguo 12/09/2013, 09:20
 
Fecha de Ingreso: septiembre-2013
Mensajes: 2
Antigüedad: 10 años, 7 meses
Puntos: 0
Validación de Formato fecha ShellScript

Hola amigos,
Mi nombre es Francisco y me encuentro con un problema, soy programador y trabajo diseñando aplicaciones en java pero ahora llego una peticion en la cual debo trabajar en una shell (Por lo cual e ido aprendiendo y metiendo un poco en el tema), Pues bien una de las cosas que debo hacer es validar el formato de una fecha y que solo se puedan ingresar fechas en formato AAAA-MM-DD y buscando en internet encontre la siguiente función que me permite validar una fecha pero en formato dd-mm-yyyy y como yo no entiendo mucho del tema les solicito su ayuda para poder adaptar esta función y que pueda permitir que SOLO SE INGRESEN fechas en formato AAAA-MM-DD:

echo -n "Por favor ingrese Fecha(AAAA-MM-DD): "; read RESPFECHA

until [ "00" -lt `expr substr $RESPFECHA 1 2` ] && [ `expr substr $RESPFECHA 1 2` -lt "32" ] && [ "00" -lt `expr substr $RESPFECHA 4 2` ] && [ `expr substr $RESPFECHA 4 2` -lt "13" ] && [ "2007" -lt `expr substr $RESPFECHA 7 4` ] && [ `expr substr $RESPFECHA 7 4` -lt "3001" ] && [ ${#RESPFECHA} = 10 ]; do

echo "La fecha no es valida, tiene que ser en formato dia-mes-anyo (AAAA-MM-DD)"
read RESPFECHA

done

Les agradezco puedan ayudarme ya que lo necesito con urgencia... muchas gracias chicos son secos!
  #2 (permalink)  
Antiguo 12/09/2013, 12:33
 
Fecha de Ingreso: septiembre-2013
Mensajes: 2
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Validación de Formato fecha ShellScript

YA que nadie respondió me respondo solo por si alguno de ustedes lo necesita OJO esta es solo una solución y pueden existir muchas mas y si quieren compartirla aquí pues bienvenidos:
until [ "2007" -lt `expr substr $RESPFECHA 1 4` ] && [ `expr substr $RESPFECHA 1 4` -lt "3001" ] && [ "00" -lt `expr substr $RESPFECHA 6 2` ] && [ `expr substr $RESPFECHA 6 2` -lt "13" ] && [ "00" -lt `expr substr $RESPFECHA 9 2` ] && [ `expr substr $RESPFECHA 9 2` -lt "32" ] && [ ${#RESPFECHA} = 10 ]; do

echo "La fecha no es valida, tiene que ser en formato dia-mes-anyo (AAAA-MM-DD)"
read RESPFECHA

done

Bastaba con invertir la posicion de los sbstring nada mas jajaaj SALUDOS
  #3 (permalink)  
Antiguo 16/09/2013, 08:22
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Validación de Formato fecha ShellScript

Bueno, es que solamente diste tres horas para contestar, ¡esto no es un chat!

La verdad, a menos que necesites trabajar con la Bourne Shell (no BASH, sino "sh"), una KSH muy antigua (anterior a ksh93), o alguna de las shells minimalistas (dash, ash, etc) esto vale y es más sencillo

Código BASH:
Ver original
  1. # forzamos a que haya 3 partes, convirtiendo los guiones en espacios.
  2.  
  3. # para BASH y KSH93
  4. PARTES=( $(echo $RESPFECHA |tr "-" " ") )
  5.  
  6. if (( ${#PARTES[@]} == 3 )); then
  7.     ANIO=${PARTES[0]}
  8.     MES=${PARTES[1]}
  9.     DIA=${PARTES[2]}
  10.  
  11.     if (( ANIO > 2007 && ANIO < 3001 && MES > 0 && MES <= 12 && DIA > 0 && DIA <= 31 )); then
  12.         echo Fecha válida
  13.     else
  14.         echo Fecha no válida
  15.     fi
  16. else
  17.     echo ERROR: la fecha ingresada no contiene 3 partes separadas por un guión
  18. fi


Saludos.

Etiquetas: fecha, formato, shellscript
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 09:20.