diff --git a/src/arg.sh b/src/arg.sh index bcf09e5..007b821 100644 --- a/src/arg.sh +++ b/src/arg.sh @@ -16,7 +16,7 @@ arg::interpolate() { } arg::next() { - grep -Eo '<[0-9a-zA-Z\-_]+>' \ + grep -Eo '<[0-9a-zA-Z_]+>' \ | head -n1 \ | tr -d '<' \ | tr -d '>' diff --git a/src/main.sh b/src/main.sh index a778e58..dbb8ac1 100644 --- a/src/main.sh +++ b/src/main.sh @@ -8,12 +8,7 @@ main() { local cmd="$(selection::command "$selection" "$cheat")" local arg value - if ! $interpolation; then - echo "$cmd" - exit 0 - fi - - while true; do + while $interpolation; do arg="$(echo "$cmd" | arg::next || echo "")" if [ -z "$arg" ]; then break @@ -29,7 +24,9 @@ main() { cmd="$(echo "$cmd" | arg::interpolate "$arg" "$value")" done - if $print; then + local readonly unresolved_arg="$(echo "$cmd" | arg::next || echo "")" + + if $print || [ -n "$unresolved_arg" ]; then echo "$cmd" else eval "$cmd"