diff options
-rwxr-xr-x | repl | 31 |
1 files changed, 31 insertions, 0 deletions
@@ -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 $* |