Получение целого числа и создание формата даты

Ваш crontabимеет только четыре поля времени и даты. Вам нужно пять, чтобы быть действительным.

Если вы размещаете свой скрипт в /etc/cron.d, вам нужно добавить имя пользователя, который будет выполнять скрипт, в качестве первого поля после стандартных полей времени и даты; как:

* * * * * yael echo test > /tmp/test

См.man 5 crontab

0
24.07.2020, 18:11
1 ответ

Делаем это с помощью манипуляций со строками, используя расширение параметра bash:

date2int() {
  printf "%s\n" "${1//-/}"
}

int2date() {
  printf "%s-%s-%s\n" "${1:0:4}" "${1:4:2}" "${1:6:2}"
}

date +%F                                # => 2020-07-24
n=$(date2int "$(date +%F)"); echo "$n"  # => 20200724
d=$(int2date "$n"); echo "$d"           # => 2020-07-24

Этот метод определенно НЕ подходит для арифметики дат.

# subtract 2 days from Jan 1
date="2000-01-01"
n=$(date2int "$date")
int2date "$((n - 2))"          # => 2000-00-99

Вы также можете придерживаться даты GNU

date="2000-01-01"
date -d "$date - 2 day" "+%F"  # => 1999-12-30
3
18.03.2021, 23:17

Теги

Похожие вопросы