aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2024-08-10 13:06:15 -0300
committerSilvio Rhatto <rhatto@riseup.net>2024-08-10 13:06:15 -0300
commitdefcbca74eed4a5541cf9fc18f998d59405e2e9f (patch)
treea30d1b069cf5bac25b5fdd7ded87b965d375e932
parent315c8d211702d6926bb48ab46628f54e10f6b18e (diff)
downloadscripts-defcbca74eed4a5541cf9fc18f998d59405e2e9f.tar.gz
scripts-defcbca74eed4a5541cf9fc18f998d59405e2e9f.tar.bz2
Feat: adds repl script
-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 $*