1*fe5cfb17STomasz Sapeta#!/usr/bin/env bash 2*fe5cfb17STomasz Sapeta 3*fe5cfb17STomasz Sapetafunction retry3 { 4*fe5cfb17STomasz Sapeta local n=1 5*fe5cfb17STomasz Sapeta local max=3 6*fe5cfb17STomasz Sapeta local delay=1 7*fe5cfb17STomasz Sapeta while true; do 8*fe5cfb17STomasz Sapeta # shellcheck disable=SC2015 9*fe5cfb17STomasz Sapeta "$@" && break || { 10*fe5cfb17STomasz Sapeta if [[ $n -lt $max ]]; then 11*fe5cfb17STomasz Sapeta ((n++)) 12*fe5cfb17STomasz Sapeta echo "Command failed. Attempt $n/$max:" 13*fe5cfb17STomasz Sapeta sleep $delay; 14*fe5cfb17STomasz Sapeta else 15*fe5cfb17STomasz Sapeta echo "The command has failed after $n attempts." >&2 16*fe5cfb17STomasz Sapeta return 1 17*fe5cfb17STomasz Sapeta fi 18*fe5cfb17STomasz Sapeta } 19*fe5cfb17STomasz Sapeta done 20*fe5cfb17STomasz Sapeta} 21*fe5cfb17STomasz Sapeta 22*fe5cfb17STomasz Sapetaif [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then 23*fe5cfb17STomasz Sapeta retry3 "$@" 24*fe5cfb17STomasz Sapetafi 25