diff options
Diffstat (limited to 'examples/functions/repeat2')
-rw-r--r-- | examples/functions/repeat2 | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/examples/functions/repeat2 b/examples/functions/repeat2 new file mode 100644 index 0000000..2e2dc7a --- /dev/null +++ b/examples/functions/repeat2 @@ -0,0 +1,43 @@ +# To: chet@ins.CWRU.Edu +# Subject: Bash functions +# From: Sandeep Mehta <sxm@philabs.Philips.Com> + +########################################## +# +# repeat - clone of C shell builtin `repeat' +# +# usage: repeat <count> <command> +# +# It has been tested inside other functions and in conditionals like +# if [ "`repeat <count> <command>`" ]; then COMMANDS [ else COMMANDS ] fi +# Please send me fixes/enhancements. +# +# Sandeep Mehta <sxm@philabs.Philips.Com> +########################################## +repeat() +{ + local rcount=$1 + + if [ $# -le 1 ] || [ -z "$rcount" ]; then + echo "usage: repeat <count> <command>" 1>&2 + return 2 + fi + + shift + + local acmd=("$@") + + if [ $rcount -le 0 ]; then + echo "count must be greater than 0" + echo "usage: repeat <count> <command>" 1>&2 + return 2 + fi + + st=0 + while [ $rcount -gt 0 ]; do + eval "${acmd[@]}" + st=$? + rcount=$((rcount - 1)) + done + return $st +} |