retry() {
trialNumber=$1 delay=$2; shift 2
while [ "$trialNumber" -gt 0 ]; do
"$@" && return
ret=$?
sleep "$delay"
trialNumber=$(($trialNumber - 1))
done
return "$ret"
}
retry 5 20 ssh "$USERID@$HOST" "$SCRIPT_LOCATION/runme.sh"
Embora o último sleep
em caso de falha não seja necessário. Pode ser melhor como:
retry() {
trialNumber=$1 delay=$2; shift 2
until "$@"; do
ret=$?
trialNumber=$(($trialNumber - 1))
[ "$trialNumber" -gt 0 ] || return "$ret"
sleep "$delay"
done
}