Как рассчитать количество прошедших лет в Linux bash console
Подскажите как будет выглядеть команда расчета количества лет, от 1986 до текущего года?
Вот так не получается, пишет не верный синтаксис, не понимаю как правильно написать что бы рассчитать эту разницу?
echo date +"%Y" - 1986
Ответы (4 шт):
Автор решения: Pr0gramm1st
→ Ссылка
Попробуйте такой вариант:
currentDate=`date +%s`
pastDate=`date +%s --date="1986-01-01"`
differenceDate=$(($currentDate-$pastDate))
differenceYear=$(($differenceDate/(3600*24*365)))
echo $differenceYear
То есть мы ищем разницу в количестве секунд между сегодняшней и целевой датой и уже с получившимся результатом работает: делим секунды на то количество секунд, которое содержится в 365 днях.
Автор решения: toorr2p
→ Ссылка
Спасибо всем, получилось все реализовать в скрипте так
#!/bin/bash
DISPLAY=:1 zenity --info --text="You are $(expr `date +%Y` - 1986) years old today!"
Автор решения: Ivan
→ Ссылка
Используя printf:
$ target_year=1986
$ printf -v current_year '%(%Y)T' -1
$ echo $current_year
2023
$ echo $((current_year-target_year))
37