Как рассчитать количество прошедших лет в Linux bash console

Рейтинг: 0Ответов: 4Опубликовано: 08.05.2023

Подскажите как будет выглядеть команда расчета количества лет, от 1986 до текущего года?

Вот так не получается, пишет не верный синтаксис, не понимаю как правильно написать что бы рассчитать эту разницу?

echo date +"%Y" - 1986

Ответы

▲ 4Принят

вариант:

expr `date +"%Y - 1986"`

37

▲ 1

Попробуйте такой вариант:

currentDate=`date +%s`
pastDate=`date +%s --date="1986-01-01"`
differenceDate=$(($currentDate-$pastDate))
differenceYear=$(($differenceDate/(3600*24*365)))
echo $differenceYear

То есть мы ищем разницу в количестве секунд между сегодняшней и целевой датой и уже с получившимся результатом работает: делим секунды на то количество секунд, которое содержится в 365 днях.

▲ 1

Спасибо всем, получилось все реализовать в скрипте так

#!/bin/bash
DISPLAY=:1 zenity --info --text="You are $(expr `date +%Y` - 1986) years old today!"
▲ 0

Используя printf:

$ target_year=1986
$ printf -v current_year '%(%Y)T' -1
$ echo $current_year
2023
$ echo $((current_year-target_year))
37