Hola. --- Mariano Laguzzi <optae@adinet.com.uy> escribió:
- Hay alguna programa, o alguna otra manera de verificar si una hora dada es válida (HH:MM) ??
(Omito la pregunta 1 porque ya tiene varias respuestas). En cuanto a la pregunta 2, siempre hay "alguna manera". Aquí te pongo una forma general: -------------------------------------------- # hora que queremos comprobar si es correcta hora="15:45" # Comprobar que sigue la forma HH:MM if ! echo "$hora" | grep '^[0-2][0-9]:[0-5][0-9]$' \ > /dev/null then echo "NO es una hora correcta" exit fi # Comprobar que la hora no es mayor que 23 if echo "$hora" | grep "^2[4-9]" > /dev/null then echo "NO es una hora correcta" exit fi # Si ha pasado ambos tests, es una hora correcta echo "SI es una hora correcta" -------------------------------------------- Esta solución se basa en patrones de sustitución, utilizando el programa grep. Es obligatorio que la hora sea HH:MM (ej. 0:29 *NO* se considera correcto, hay que utilizar 00:29). Lo he tecleado sobre la marcha, por lo que no está probado y puede que contenga algún error. Te animo a que construyas tu propia solución (que probablemente estará más adaptada a tus necesidades). Para cualquier tratamiento más avanzado probablemente necesitarás tratar las partes HH y MM numéricamente. Aquí te va un ejemplo rápido de cómo hacerlo: -------------------------------------------- hh=`echo "$hora" | cut -f 1 -d :` mm=`echo "$hora" | cut -f 2 -d :` if [ "$hh" -lt 0 -o "$hh" -gt 23 \ -o "$mm" -lt 0 -o "$mm" -gt 23 ] then echo "Hora NO correcta" else echo "Hora SI correcta" fi -------------------------------------------- En la página man del bash tienes instrucciones para hacer casi cualquier manipulación de datos que se te ocurra (incluyendo alguna de las que yo hago más arriba con grep y cut). Es larga, pero merece la pena. Un saludo. Rubén. _______________________________________________________________ Copa del Mundo de la FIFA 2002 El único lugar de Internet con vídeos de los 64 partidos. ¡Apúntante ya! en http://fifaworldcup.yahoo.com/fc/es/