A versão GNU de date
que você está acostumado no Linux suporta muito mais formato de data do que a versão de date
na maioria das outras variantes Unix. Ele também tem muitas opções que não estão presentes em outras variantes do Unix. O único uso padrão de date
é exibir a data atual de acordo com um formato especificado com um argumento +…
(e também uma maneira de o administrador do sistema definir a data do sistema) e a opção -u
para especificar o UTC em vez do fuso horário local.
Em FreeBSD , você pode usar o utilitário date
para converter entre formatos de data com a opção -f
, por exemplo date -f %s "$datum" +%Y-%m-%d
para converter uma data expressa em segundos da época para um formato legível por humanos.
Se você quiser uma extravagante análise de data, você pode instalar o pacote coreutils
, que contém a data GNU. Ou você pode usar o módulo Date::Parse
em Perl ou dateutil
em Python.
Para fazer com que um script de shell pare na maioria dos erros, adicione set -e
logo abaixo da linha #!
.
Se você quiser exibir um erro explicitamente, cabe a você sair do script com um status de erro. Imprimir erros para stderr, não para stdout.
date -d "$datum" +"%Y-%m-%d" >/dev/null 2>&1 || {
echo "ERROR wrong format" >&2
exit 1
}
ou
if ! date -d "$datum" +"%Y-%m-%d" >/dev/null 2>&1; then
echo "ERROR wrong format" >&2
exit 1
fi