Може да искате да пренапишете кода си, така че да изглежда така:
while: ; do
case $step in
0) command_1 && ((step++)) ;;
1) command_2 && ((step++)) ;;
...
9) command_9 && step=0 ;;
*) echo "ERROR" >&2 ; exit 1 ;;
esac
done
Така че ще разберете какво е направено, като тествате стойността на step
.
След това може да искате да зададете trap
преди while
цикълът се изпълнява, така че при излизане стойността на step
се записва в регистрационен файл:
trap "echo step=$step > log_file" EXIT
След това всичко, което трябва да направите, е да source
регистрационния файл в началото на скрипта, а последният ще продължи работата си там, където е бил спрян.