Wednesday, October 2, 2013

BASH: Buscar el día anterior al día provisto.

Este pequeño "if" es muy útil. El mismo calcula el día anterior de la fecha provista (formato YYYYmmDD) y si no se le provee ninguna automáticamente le asigna el día de hoy y el de ayer a las variables pertinentes.


#!/bin/bash

#Si el parametro $1 NO viene vacio
if [ ${#1} != 0 ]
then
        #Entonces TIMESTAMP es igual al valor de $1
        TIMESTAMP=$1

        #ONEDAYBEFORE es un dia antes del dia provisto
        ONEDAYBEFORE=$(date -d "$1 - 1 day" "+%Y%m%d")
else
        #De lo contrario TIMESTAMP sera el dia de hoy
        TIMESTAMP=`date +"%Y%m%d"`
        
        #ONEDAYBEFORE sera el dia de ayer
        ONEDAYBEFORE=`date --date="yesterday" "+%Y%m%d"`
fi

Utilidad:
Supongamos que diariamente tienes que generar un reporte que compare el día de ayer con el de hoy. La ventaja que provee este if es la flexibilidad de poder ejecutar este script tanto manual como automáticamente, osea, puedes ponerle una fecha en el pasado y obtendrá el día anterior al provisto.