Я хочу проверить приведенный ниже формат даты в сценарии оболочки
2015-Jul-13
Я использую, date -d "2015-Jul-13" +"%Y-%b-%d"
но дает ошибку как
date: invalid date '2015-Jul-13'
shell-script
date
чхайа вишвакарма
источник
источник
date
не распознаетYYYY-MMM-DD
. Не могли бы вы использоватьYYYY-MM-DD
илиDD MMM YYYY
вместо?at
, что да, и - я думаю -touch
тоже. Я написал функцию оболочки проверки даты, основанную на одном разеtouch
... Нет, нетtouch
- она обрабатывает только цифры, ноat
выполняет довольно глубокий анализ ...Ответы:
GNU
date
не поддерживаетYYYY-MMM-DD
. Тем не менее, он понимаетDD-MMM-YYYY
. Так что если вам действительно нужно обрабатывать даты этого формата, вы можете сделать это с помощью чего-то подобного, что просто меняет аргументы на ожидаемый форматdate
:Вот решение всей оболочки. Разбивая его,
IFS=-
инструкции говорят оболочке разделить предстоящую командную строку на дефис-
вместо пробела.set $ymd
Разбирает$ymd
переменную как для командной строки, но теперь расщепляется с помощью дефиса, присвоения значений параметров$1
,$2
и сл .echo "$3-$2-$1"
Тривиальные выводят три захваченных значений в обратном порядке.источник
ymd=$(IFS=-;set $ymd; echo "$3-$2-$1")
Не могли бы вы раскрыть магию, стоящую заset
командой?С manpage: -
Но, похоже, не распознают
YYYY-MMM-DD
формат. Таким образом, вы можете использовать либо снизу или аналогичные, как:ИЛИ вы должны конвертировать / переформатировать его перед отправкой в
date
!Также смотрите Как вы определяете формат для ввода на сегодняшний день?
Рекомендую посетить: Форматы ввода даты .
подчеркнуто мной
Здесь вы можете видеть, что нет такого формата, как год-месяц-день ! (месяцами написаны буквально)
источник
С помощью
zsh
вы можете использоватьstrftime
встроенный (доступно черезzsh/datetime
) с-r
(реверс):который использует формат для анализа временной строки и вывода количества секунд с начала эпохи:
Это ошибки, если дата недействительна:
Вы также можете конвертировать секунды с начала эпохи в любой другой стандартный / пользовательский формат даты, например
источник