Esta división fue evaluado por especialistas así aseguramos la exactitud de nuestra esta reseña.
Solución:
Fecha de uso
date "+%d/%m/%Y" -d "09/99/2013" > /dev/null 2>&1
is_valid=$?
Si no obtiene 0, la fecha tiene un formato no válido.
La solución más simple, que todavía funciona perfectamente, es la siguiente:
if [[ $1 =~ ^[0-9]4-[0-9]2-[0-9]2$ ]] && date -d "$1" >/dev/null 2>&1
...
Consiste en combinar 2 cheques:
- la primera parte comprueba que
$1
es de este formato:NNNN-NN-NN
- la segunda parte comprueba que es una fecha válida
Necesitas los dos cheques porque:
- si no haces la primera comprobación,
date
saldrá con el código 0 incluso si su variable es una fecha válida en otro formato - si no hace la segunda verificación, puede terminar con un 0 incluso para variables como
2016-13-45
Esta función espera 2 cadenas, un formato stringuna cita string
El formato string usa los códigos del comando de fecha pero no incluye el ‘+’
La función devuelve 0 si la fecha proporcionada coincide con el formato dado; de lo contrario, devuelve 1
Código (mi_script.sh)
#!/bin/bash
datecheck()
local format="$1" d="$2"
[[ "$(date "+$format" -d "$d" 2>/dev/null)" == "$d" ]]
date_test="$1"
echo $date_test
if datecheck "%d %b %Y" "$date_test"; then
echo OK
else
echo KO
fi
Producción
$ ./my_script.sh "05 Apr 2020"
05 Apr 2020
OK
$ ./my_script.sh "foo bar"
foo bar
KO
Aquí tienes las comentarios y calificaciones
Si te gustó nuestro trabajo, puedes dejar un tutorial acerca de qué te ha impresionado de este post.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)