#!/bin/bash # # Timothy Brooks 2012 # # try - keep attempting a command until it returns 0 # VERSION=1.0 PROG="try" while getopts "vhd:j:t:" opt; do #echo opt: ${opt} arg: ${OPTARG} case $opt in h) PERIOD="NULL" break ;; v) echo ${PROG} ${VERSION} exit ;; t) PERIOD=${OPTARG} ;; \?) echo "Invalid option: -${OPTARG}" >&2 PID="NULL" break ;; :) echo "Option -${OPTARG} requires an argument." >&2 PID="NULL" break ;; esac done function execute { $* RET=$? echo ===== Returned $RET } if [ -z "$PERIOD" ]; then PERIOD=30 fi if [ "$PERIOD" == "NULL" ]; then # print usage message if we still don't have a period echo "usage: ${PROG} [options] " >&2 echo "" >&2 echo "options:" >&2 echo " -v show program's version number and exit" >&2 echo " -h show this help message and exit" >&2 echo " -p PERIOD retry period" >&2 exit 0 fi all=("$@") cmd=${all[@]:${OPTIND} - 1} execute ${cmd} while [ $RET -ne 0 ] do sleep ${PERIOD} execute ${cmd} done