Anda mungkin ingin menulis ulang kode Anda sehingga terlihat seperti ini:
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
Jadi, Anda akan mengetahui apa yang telah dilakukan dengan menguji nilai step
.
Kemudian, Anda mungkin ingin mengatur trap
sebelum while
loop dieksekusi, sehingga, saat keluar, nilai step
ditulis ke file log:
trap "echo step=$step > log_file" EXIT
Kemudian, yang perlu Anda lakukan adalah source
file log di awal skrip, dan yang terakhir akan melanjutkan pekerjaannya di tempat yang telah dihentikan.