Я пытаюсь преобразовать будущую дату в номер эпохи в Ubuntu Mate 20.04.
Поэтому я решил написать этот код:
daysAmount="10"
endDate=$(date +"%b %_d %Y" -d "+$daysAmount days")
epochNum=$(date -d "$endDate" +%s)
Первые две строки работают хорошо, но у меня ничего не получается epochNum=
.
Можно ли написать еще одну переменную внутри, $(date)
как у меня? Если нет, как мне заставить это работать?
Я тоже пробовал, endDate=$(date +"%b %_d %Y" -d "+$daysAmount days" +%s)
но это тоже не сработало.
решение1
Вы можете запускать команды с временной локалью. Это должно решить вашу проблему:
daysAmount="10"
endDate=$(LC_ALL=C date +"%b %_d %Y" -d "+$daysAmount days")
epochNum=$(LC_ALL=C date -d "$endDate" +%s)
решение2
Постарайтесь заставить это работать.
Проверьте язык даты перед конвертацией в номер эпохи. Если имя вашего монтировки отличается от американского алфавита, как в примере команды "date" здесь:
1.11.2021 (пн) 14:47:59 EET
Конвертация не сработает.
В другой машине, где «дата» отображается так (американский алфавит):
Mon Nov 1 14:47:45 EET 2021
код работал отлично
Рабочий пример на машинах с разными языками см. здесь: https://unix.stackexchange.com/a/675661/499362