Я написал большой скрипт для запуска серии тестов. Каждый тест является отдельной функцией, и я вызываю эти функции последовательно, чтобы выполнить работу.
Теперь я хочу подготовить условия для возобновления работы скрипта с последней функции, в которой он был прерван (например, в случае зависания системы). Логика, которую я сейчас использую, заключается в том, чтобы записать состояние выполнения в файл, а затем проверить содержимое файла, чтобы определить, где запустить сценарий и продолжить его с этого места.
Однако я не могу продолжать использовать эту логику, потому что я хочу ввести в скрипт меню, из которого я хочу иметь возможность выбирать:
1) Запустить все тесты от начала до конца
2) Запустить отдельные тесты (выводит другое меню с индивидуальными параметрами теста)
3) Возобновить с последнего прерывания
Я написал код для меню, но все еще не понял, как согласовать мою существующую логику с конструкцией case, используемой в моей системе меню. Я недоволен текущим резюме из последней логики прерывания, которую я использую в настоящее время, а именно:
fn1()
{
#do a bunch of things
echo 1 > progress.log
fn2
}
fn2()
{
STATUS=`cat progress.log`
case "$STATUS" in
1)
#do a bunch of things
echo 2 > progress.log
fn3
;;
*)
fn3
;;
esac
}
..
..
# and more functions in the same style as fn2
..
# main call
if [ -f progress.log ]
fn2
else
fn1
fi
Есть какие-нибудь идеи относительно более чистого способа сделать эту логику возобновления при интеграции ее с возможностью запускать тесты индивидуально при необходимости? Спасибо.