Es posible que desee volver a escribir su código para que se vea así:
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
Entonces, estaría al tanto de lo que se ha hecho al probar el valor de step
.
Entonces, es posible que desee establecer una trap
antes del while
se ejecuta el bucle, de modo que, al salir, el valor de step
se escribe en un archivo de registro:
trap "echo step=$step > log_file" EXIT
Luego, todo lo que necesita hacer es source
el archivo de registro al comienzo del script, y el último continuará su trabajo donde se detuvo.