diff options
-rw-r--r-- | bos-args.sh | 7 | ||||
-rw-r--r-- | t/args.t | 5 |
2 files changed, 6 insertions, 6 deletions
diff --git a/bos-args.sh b/bos-args.sh index e0f0729..69c27d8 100644 --- a/bos-args.sh +++ b/bos-args.sh @@ -37,14 +37,15 @@ case \"\$1\" in parser_result_var+="-${argname}) $argassign; shift 2 ;; " elif [[ "${argtype["$argname"]}" == assoc ]]; then - argassign="${argassign//\$\{key/\$\{2}" - argassign="${argassign//\$\{value/\$\{3}" + argassign="${argassign//\$\{key/\$\{__args_key}" + argassign="${argassign//\$\{value/\$\{__args_value}" - parser_result_var+="-${argname}) $argassign; shift 3 ;; + parser_result_var+="-${argname}) IFS='=' read -s __args_key __args_value <<<\"\$2\"; $argassign; shift 2 ;; " fi done + # ignore anything else! parser_result_var+="*) shift ;; esac done @@ -16,18 +16,17 @@ bos-args/build-parser-code-into first_parser \ should-succeed "should build parser" -diag "$first_parser" - declare -a array_var declare -A assoc_var eval "function first-parser() { $first_parser }" -first-parser -two a -three x y -two b -one foo -three w z -unused +first-parser -two a -three x=y -random -two b -one foo -three w=z -two -not-special- -unused inputs is "$scalar_var" 'foo' 'scalar should be set' is "${array_var[0]}" 'a' 'array should get first value' is "${array_var[1]}" 'b' 'array should get second value' +is "${array_var[2]}" '-not-special-' 'array should get not-special third value' is "${assoc_var[x]}" 'y' 'assoc should get first value' is "${assoc_var[w]}" 'z' 'assoc should get second value' |