bioid
@bioid

Покритикуете bash-скрипт?

Я очень далек от скриптов и разработки. Понадобилось в кое веке наваять простенький скрипт. Проверьте, плиз, кого не затруднит. Скрипт работает. Закинул его в fcron на выполнение раз в минуту. Но иногда сообщения в телеграм валятся с опозданием от 3, до 20 минут.
#!/bin/bash
KEY="xxxxxxx:yyyyyyyyyyy" #ключ телегграм-бота
TARGET="-4343905834509345098345" #id группы телеграм
URL1="https://api.telegram.org/bot$KEY/sendMessage"
output=$(curl -s 'https://экзампл.ком/api/posts/json')
OLD_TIME=$(echo $(cat /root/telegram/previous_post_time.json)) #время создания предыдущего поста, записанного в epoch-time.
GET_TIME=$(echo $output | jq .posts[0].created) #вытаскиваем из запроса время создания последнего поста
if (( $GET_TIME > $OLD_TIME )); then
    TIME=$(echo $GET_TIME>/root/telegram/previous_post_time.json) #записываем новое значение времени создания поста.
    GET_URL=$(echo $output | jq -r .posts[0]._links[1].href)                               
    GET_USER=$(echo $output | jq -r .posts[0].user.login)   
    URL=$(echo $GET_URL>/root/telegram/url.json)                                                        
    TEXT="$GET_USER $GET_URL"
    PAYLOAD="chat_id=$TARGET&text=$TEXT&parse_mode=Markdown"
    curl -s --max-time 10 --retry 5 --retry-delay 2 --retry-max-time 10 -d "$PAYLOAD" $URL1 > /dev/null 2>&1 &
else
    exit 0
fi
exit 0
  • Вопрос задан
  • 275 просмотров
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
if (( $GET_TIME > $OLD_TIME )); then


Тут идет арифметическое сравнение.
Скорее всего блок все время выполняется с ошибкой, потому что непонятно что в $GET_TIME, и там вряд-ли распознаваемая команда. Разве что случайно попадает что-то внятное. Если приведете примеры того, что у вас в эти переменные попадает, будет понятнее.

Сравнивать нужно не даты, а таймстампы
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы