aboutsummaryrefslogtreecommitdiff
path: root/repl
diff options
context:
space:
mode:
Diffstat (limited to 'repl')
-rwxr-xr-xrepl31
1 files changed, 31 insertions, 0 deletions
diff --git a/repl b/repl
new file mode 100755
index 0000000..f205b36
--- /dev/null
+++ b/repl
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# Generic read-eval-print loop script.
+#
+
+# Parameters
+BASENAME="`basename $0`"
+
+# Shell
+function _repl {
+ local last_exit_code="0"
+ local command="$1"
+
+ shift
+
+ # While Ctrl-C isn't typed, read STDIN and invoke a command
+ while read -rep "${last_exit_code} ${command}> " STDIN; do
+ history -s "$STDIN"
+ ${command} $* ${STDIN[@]}
+ last_exit_code="$?"
+ done
+}
+
+# Check
+if [ -z "$COMMAND" ]; then
+ echo "usage: $BASENAME <command> [base-args]"
+ exit 1
+fi
+
+# Dispatch
+_repl $*