#!/bin/bash function run_with_retry() { if [[ $- =~ e ]]; then set_e=true else set_e=false fi set +e local total_retries="$1" shift local retry=0 until [ "$retry" -ge "$total_retries" ] do if "$@"; then if $set_e; then set -e fi return else retry=$((retry + 1)) sleep 5 fi done echo "Command '$*' failed after $total_retries retries, exiting" exit 1 } function fn_exists() { declare -F "$1" > /dev/null; } function timeout_with_logging() { local exit_code=0 timeout "${@}" || exit_code="${?}" if [[ "${exit_code}" -eq "124" ]] then echo "The command 'timeout ${*}' has been killed by timeout" fi return $exit_code } # vi: ft=bash