次のようにコードを書き直すことをお勧めします。
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
することだけです スクリプトの先頭にあるログファイル。最後のログファイルは、停止した場所でジョブを続行します。