You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					28 lines
				
				503 B
			
		
		
			
		
	
	
					28 lines
				
				503 B
			| 
								 
											2 years ago
										 
									 | 
							
								#!/bin/bash
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function fail {
							 | 
						||
| 
								 | 
							
								  echo $1 >&2
							 | 
						||
| 
								 | 
							
								  exit 1
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function retry {
							 | 
						||
| 
								 | 
							
								  local n=1
							 | 
						||
| 
								 | 
							
								  local max=3 # 3 retries before failure
							 | 
						||
| 
								 | 
							
								  local delay=5 # delay between retries, 5 seconds
							 | 
						||
| 
								 | 
							
								  while true; do
							 | 
						||
| 
								 | 
							
								    echo "Running command '$@' with retry, attempt $n/$max"
							 | 
						||
| 
								 | 
							
								    "$@" && break || {
							 | 
						||
| 
								 | 
							
								      if [[ $n -lt $max ]]; then
							 | 
						||
| 
								 | 
							
								        ((n++))
							 | 
						||
| 
								 | 
							
								        sleep $delay;
							 | 
						||
| 
								 | 
							
								      else
							 | 
						||
| 
								 | 
							
								        fail "The command has failed after $n attempts."
							 | 
						||
| 
								 | 
							
								      fi
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  done
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
							 | 
						||
| 
								 | 
							
								    retry "$@"
							 | 
						||
| 
								 | 
							
								fi
							 |