Версия GNU Дата
, которую вы используете на Linux, поддерживают гораздо больше, чем в формате даты
на большинстве других UNIX варианты. Он также имеет много вариантов, которые не присутствуют на других вариантах Unix. Единственный стандарт дата
- отображение текущей даты в соответствии с форматом, указанным в аргументе + ...
(а также способ для системного администратора Установите системную дату) и опцию -U
, чтобы указать UTC вместо локального часового пояса.
На FreeBSD Вы можете использовать утилиту Date
для преобразования между форматами дата с помощью параметра
, например. Дата -F% s "$ Datum" +% y-% m-% d
для преобразования даты, выраженной в секундах из эпохи в читаемый человеком формате.
Если вы хотите приступить к разбору даты, вы можете установить пакет Coreutils
, который содержит дату GNU. Или вы можете использовать Дата :: Parse
модуль в Perl или DateutiL
в Python.
Чтобы остановить сценарий оболочки на большинстве ошибок, добавьте SET -E
чуть ниже #!
линия.
Если вы хотите явно отобразить ошибку, это зависит от вас, чтобы выйти из строя скрипта с состоянием ошибки. Напечатайте ошибки в Стдерру, а не на stdout.
date -d "$datum" +"%Y-%m-%d" >/dev/null 2>&1 || {
echo "ERROR wrong format" >&2
exit 1
}
или
if ! date -d "$datum" +"%Y-%m-%d" >/dev/null 2>&1; then
echo "ERROR wrong format" >&2
exit 1
fi
У меня нет коробки BSD для проверки, но кажется, что вам нужно использовать эту форму:
date -f "some format" "$datum" "+%Y-%m-%d"
, и вы должны указать формат входящего данных, так что это может быть проанализированным.