Добавьте другое задание cron
, чтобы оно удалило файл флага в пятницу вечером, до того, как другое задание начнет выполняться:
59 23 * * 5 rm .succeeded.txt
Затем измените свой сценарий, чтобы он прервался, если этот файл существует, и создал его когда это удастся.
#!/bin/bash
test -e .succeeded.txt && exit
if [[ $(curl -X GET "api") == "SUCCEEDED" ]];then
trigger email
touch .succeeded.txt
fi
Я пытался исправить и другие ошибки в вашем скрипте, но мне пришлось угадывать многие вещи. Это предполагает, что "SUCCEEDED"
является единственным выходом из curl
, когда GET
работает.
Помещение команды в переменную - бесполезное осложнение, которое делает ваш скрипт длиннее и (очень немного) медленнее, но в кроме того, это создает собственные проблемы, когда команда содержит встроенные кавычки; см., например, http://mywiki.wooledge.org/BashFAQ/050
... Но, конечно, по-видимому, вы действительно хотели запустить команду. Ваша попытка просто проверила бы, равна ли строка в переменной "SUCEEDED"
, что, конечно, никогда не будет.
Другая проблема заключалась в том, что вы создавали несколько validate.sh
заданий, каждое из которых рекурсивно и повторить. Вы хотите того или другого, а не обоих. Я придерживался вашего графика и просто пробовал один раз в каждой работе.