Você tem várias peças para a sua pergunta, e eu não posso reivindicar familiaridade com todos os comandos que você executa, mas aqui está minha opinião:
Execute o script inteiro como root (diretamente) ou via sudo. Dessa forma, você não precisará executar o sudo no próprio script. Se você precisar de sudo para uma etapa específica, será necessário configurar sua ID com um sinalizador NOPASSWD em sudoers ou aceitar um prompt interativo para sua senha durante a execução do script.
Para responder a sua outra pergunta geral sobre cada passo executando corretamente, a maneira de fazer isso é checar o código de retorno do passo e esperar que o programa exiting defina o código de retorno apropriadamente.
Por exemplo:
Short-hand notation:
yum update && \
yum install yum-utils bzip2 bzip2-devel wget curl tar
Longer-hand:
yum update
RC=$?
if [ $RC -ne 0 ]
then
print "Some error message here"
exit 1 ## or some other identifying error code
fi
yum install yum-utils bzip2 bzip2-devel wget curl tar
RC=$?
if [ $RC -ne 0 ]
then
print "Some other error message here"
exit 2 ## or some other identifying error code
fi
...