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
 |