No entiendo muy bien la duda. ¿"comando1 || comando2" no te sirve? Eso ejecuta comando1 y si falla ejecuta el comando2, como bien dices, y lo que quieres es ejecutar otros comandos si el primero te falla, ¿no?
También tienes la variable $?, que contiene el valor devuelto por el último programa.