Comparar fechas en Shell Scripting

Para comparar fechas en Shell Scripting primero es necesario almacenarlas con el formato adecuado. A tal efecto, se almacenarán las fechas en variables correctamente formateadas. Véase el siguiente ejemplo:


actual=`date -d "$fecha" +%s`
anterior=`date -d "$fecha2" +%s`


Si se quisiera restar estas fechas se podría hacerlo de la siguiente forma:

fechadiferencia=`echo $(( actual - anterior ))`

De esta forma se podría conocer si una fecha es mayor que otra. Si el resultado es positivo es que la fecha primera es mayor que la segunda. Por el contrario si el resultado es negativo es que la fecha primera es menor que la segunda.

Si se pretende conocer si las fechas son iguales se recomienda emplear un IF de la siguiente forma:


if [ "$actual" == "$anterior" ]; then
     "Código si cumple con la sentencia anterior"
fi

He visto casos en los que se emplea "test" para comparar si las fechas son iguales. Es posible que el resultado no sea el deseado por lo tanto os recomiendo emplear la condición tal y como se muestra en el ejemplo anterior.

De la misma forma si se quiere comprobar que una variable en la que se ha almacenado una fecha sea de tipo nulo se puede emplear una condición de la siguiente forma:

if [ -z "$actual" ]; then
       
      echo "Actual es nulo"

else

     echo "Actual no es nulo"

fi