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.
© 2003-2025, 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.