आप अपना कोड फिर से लिखना चाह सकते हैं ताकि यह इस तरह दिखे:
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
. करना है स्क्रिप्ट की शुरुआत में लॉग फ़ाइल, और आखिरी वाला अपना काम जारी रखेगा जहां इसे रोका गया है।