Shell Script: Como obter a data anterior

Márcio d'Ávila, 1º de junho de 2004.
Categoria: Unix / Linux

Você já precisou de, em determinado momento de um programa, obter a data correspondente ao dia anterior a uma certa data? Se você eventualmente estiver trabalhando com SQL, isso é trivial: basta subtrair 1 de um valor do tipo DATE. Mas se você estiver no meio de um script shell, tudo fica mais complicado. Isso se você não tiver a função aqui apresentada, que recebe três parâmetros numéricos correspondentes a dia (do mês), mês (1 a 12) e ano, e retorna dia, mês e ano do dia anterior à data fornecida.

fn_data_anterior()
{
	DIA=$1
	MES=$2
	ANO=$3

	# Dado DIA, MES e ANO numericos, obtem a data do dia anterior
	DIA=`expr $DIA - 1`
	if [ $DIA -eq 0 ]; then
		MES=`expr $MES - 1`
		if [ $MES -eq 0 ]; then
			MES=12
			ANO=`expr $ANO - 1`
		fi
		DIA=`cal $MES $ANO`
		DIA=`echo $DIA | awk '{ print $NF }'`
	fi
	echo $DIA $MES $ANO
}

O grande detalhe é quando a data fornecida é um dia primeiro; o script usa o comando cal (calendário) para obter o último dia do mês anterior.


Creative Commons License

© 2003-2021, Márcio d'Ávila, mhavila.com.br, direitos reservados. O texto e código-fonte apresentados podem ser referenciados, distribuídos e utilizados, desde que expressamente citada esta fonte e o crédito do(s) autor(es). A informação aqui apresentada, apesar de todo o esforço para garantir sua precisão e correção, é oferecida "como está", sem quaisquer garantias explícitas ou implícitas decorrentes de sua utilização ou suas conseqüências diretas e indiretas.