Vous voudrez peut-être réécrire votre code pour qu'il ressemble à ceci :
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
Ainsi, vous seriez au courant de ce qui a été fait en testant la valeur de step
.
Ensuite, vous pouvez définir un trap
avant le while
boucle est exécutée, de sorte qu'en sortie, la valeur de step
est écrit dans un fichier journal :
trap "echo step=$step > log_file" EXIT
Ensuite, tout ce que vous avez à faire est de source
le fichier journal au début du script, et le dernier continuera son travail là où il a été arrêté.