Preciso escrever uma variável com função "data" e preciso que o formato seja aaaammdd (ou seja, 20151031). Além disso, eu removeria um dia (ou seja, 20151031 se torna 20151030) e usaria o bash.
Obrigado!
Responder1
Use date +%Y%m%d
para imprimir a data atual.
Use date --date '1 day ago' +%Y%m%d
para imprimir a data de ontem (GNU's date
).
Usar date -v -1d +Y%m%d
(FreeBSD).
Responder2
bash-4.2 e superior possuem suporte integrado para isso (inspirado em algo semelhante no ksh93):
printf -v now '%(%s)T' -1
printf '%(%Y%m%d)T\n' "$((now - 86400))"
Imprimiria a data de ontem (bem, a data de 86.400 segundos atrás) no formato AAAAMMDD. Pode não funcionar se for executado em determinadas horas da noite no horário de inverno/verão (quando os dias têm 23 ou 25 horas de duração).
Provavelmente seria mais confiável para esses casos extremos se escrito como:
printf -v now '%(%s:%H)T' -1
printf '%(%Y%m%d)T\n' "$((${now%:*} - 3600 * (12 + ${now#*:})))"