Вопрос подразумевает, что код должен идентифицировать каждый 10-дневный период, начиная с определенного START_DATE. У Bash нет математики даты - он не может рассчитать разницу между датами (как ожидалось '(CURRENT_DATE - START_DATE)'). Два варианта
- Преобразование даты в секунды с начала эпохи Unix и вычисление этих значений, ИЛИ
- Использование пакета утилит даты, ИЛИ
- с использованием Python, awkperl
Реализация №1 проста. Обратите внимание на несколько изменений в присваиваниях - в частности, в присваиваниях не допускаются пробелы: переменная = выражение, или пусть переменная = выражение
#! /bin/bash
CURRENT_DATE=$(date +%Y-%m-%d)
START_DATE=2019-01-01
# Instead of IS_TODAY_DECADE_CALCULATION_DAY = (CURRENT_DATE - START_DATE) % 10
SEC_IN_DAY=$((60*60*24))
let D1=$(date '+%s' -d "$CURRENT_DATE Z")/SEC_IN_DAY
let D2=$(date '+%s' -d "$START_DATE Z")/SEC_IN_DAY
let IS_TODAY_DECADE_CALCULATION_DAY=(CURRENT_DATE-START_DATE)%10
# Rest of script here
if [ $IS_TODAY_DECADE_CALCULATION_DAY -eq 0 ]
then
BEGIN_DATE=$(date -d "$CURRENT_DATE - 11 days" +%Y-%m-%d)
END_DATE=$(date -d "$CURRENT_DATE - 1 day" +%Y-%m-%d)
echo "Period is=$BEGIN_DATE:$END_DATE"
else
echo "Decade is not finished."
fi