Как правильно следить за ходом выполнения работы и поддерживать запуск с предыдущего удачно выполненного этапа, в случае некорректно завершения текущего?
У тебя прямо в скриптах должно быть завершение с кодом. Если ошибок не было, нужно завершать скрипт через exit 0. Если произошла ошибка, нужно завершать скрипт через exit 1.
Когда у тебя скрипты так сделаны, ты можешь проверять их код завершения.
А потом ты можешь написать скрипт со строками
{ script1.sh && echo "script1 - ok"; } || echo "script1 - fail"
{ script2.sh && echo "script2 - ok"; } || echo "script2 - fail"
{ script3.sh && echo "script3 - ok"; } || echo "script3 - fail"
Пример{ echo x1 && echo "script1 - ok"; } || echo "script1 - fail"
{ cat x && echo "script2 - ok"; } || echo "script2 - fail"
{ echo x2 && echo "script3 - ok"; } || echo "script3 - fail"
{ touch /x && echo "script4 - ok"; } || echo "script4 - fail"
[guest@localhost ~]$ { echo x1 && echo "script1 - ok"; } || echo "script1 - fail"
x1
script1 - ok
[guest@localhost ~]$ { cat x && echo "script2 - ok"; } || echo "script2 - fail"
cat: x: Нет такого файла или каталога
script2 - fail
[guest@localhost ~]$ { echo x2 && echo "script3 - ok"; } || echo "script3 - fail"
x2
script3 - ok
[guest@localhost ~]$ { touch /x && echo "script4 - ok"; } || echo "script4 - fail"
touch: невозможно выполнить touch для «/x»: Отказано в доступе
script4 - fail
[guest@localhost ~]$
Можно сделать и так
{ script1.sh && echo "script1 - ok"; } || { echo "script1 - fail"; exit 1; }
{ script2.sh && echo "script2 - ok"; } || { echo "script2 - fail"; exit 1; }
Тогда он в случае успеха будет выводить успешную фразу и продолжать, а в случае ошибки он будет выводить сбойную фразу и сразу выходить (с кодом ошибки).