Potresti voler riscrivere il tuo codice in modo che assomigli a questo:
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
Quindi saresti consapevole di ciò che è stato fatto testando il valore di step
.
Quindi, potresti voler impostare una trap
prima del while
loop viene eseguito, in modo che, all'uscita, il valore di step
viene scritto in un file di registro:
trap "echo step=$step > log_file" EXIT
Quindi, tutto ciò che devi fare è source
il file di registro all'inizio dello script e l'ultimo continuerà il suo lavoro dove è stato interrotto.