Jairo Franchi Jairo Franchi - 1 year ago 51
Bash Question

Validate Date Format in a Shell Script

I have to create a Shell Script wherein one of the parameters will be the date in the format dd/mm/yyyy. My question is, how can I check if the Date passed as parameter really follows this Date Format? I tried to use the grep command as below:

if echo "$1" | grep -q '^[0-3][0-9]/[0-1][0-9]/[0-9]\{4\}$'

but it didn't give the correct format because the day for example can be 33, 34, (...), that is not really the correct format. Anyone know something that can really check if the date passed really follows the format dd/mm/yyyy ?


Use date

date "+%d/%m/%Y" -d "09/99/2013" > /dev/null  2>&1

If you do not get 0 then date is in invalid format.