#!/bin/bash set -xeuo pipefail command_to_test="$1" command_on_first_fail="$2" while : do eval "$command_to_test" || { eval "$command_on_first_fail" && exit 0; } sleep 1 done