@6, performing a step over and over until it succeeds is not going to accomplish anything other than to mess everything up even worse, if it doesn't just sit there and look like its doing absolutely nothing. That's like me executing a while loop, passing in data that turns out to cause errors, but just continuing to try over and over with the same data and continuing to cause the same error over and over because I want to try and "force" the system to do what I want. If an error comes up, your only option is to either bale out, or try different methods (cleaning up after yourself on the way) and, if none of those other methods succeed, bailing out too. You have no other option, and attempting to force the issue will not only piss your users off, but it will waste valuable resources. Use the || operator on every command, or check every commands exit code. Do not just "hope" it works. That will only cause huge problems if you just run commands and hope to god they work (and then they don't, or you break something).
"On two occasions I have been asked [by members of Parliament!]: 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out ?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question." — Charles Babbage.
My Github