$ date
Mi 14. Jun 09:54:58 CEST 2017
$ date -d "Mi 14. Jun 09:54:58 CEST 2017" +%s
date: invalid date ‘Mi 14. Jun 09:54:58 CEST 2017’
Почему команда date не принимает свою собственную строку вывода в качестве допустимой строки ввода?
info date сказала мне, что опция -d требует ввода в независимом от локали формате. Чтобы получить вывод в таком формате, используйте:
LC_TIME=C date
Поэтому должно работать следующее:
date -d "$(LC_TIME=C date)" +%s
Это только громоздкий пример, который имеет небольшой смысл (сравните date +%s), но он показывает, что date принимает свои выходные данные в качестве входных данных.
Общая информация: Чтобы большинство команд создавало независимый от локали вывод, используйте LANG=C some_command . В приведенном выше примере LANG=C date должна работать.