aboutsummaryrefslogtreecommitdiffstats
path: root/examples/functions/repeat2
diff options
context:
space:
mode:
Diffstat (limited to 'examples/functions/repeat2')
-rw-r--r--examples/functions/repeat243
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
+}