From fd9d9974e782f22ffa5c6b2f0dcdf695808cee48 Mon Sep 17 00:00:00 2001 From: Denis Isidoro Date: Sat, 21 Sep 2019 17:29:46 -0300 Subject: [PATCH] Prevent printing result in some cases with --no-interpolation (#25) Fix #19 and #11 --- src/arg.sh | 2 +- src/main.sh | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) 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"