From 15ed92d390303ce4942d293a150296091429bd01 Mon Sep 17 00:00:00 2001 From: Andrew Kesterson Date: Mon, 19 May 2014 16:30:07 -0700 Subject: [PATCH] Close #11 : This does, indeed, fix the big janky naming bug --- cmdarg.sh | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/cmdarg.sh b/cmdarg.sh index f77281a..5e5347c 100644 --- a/cmdarg.sh +++ b/cmdarg.sh @@ -177,14 +177,11 @@ function cmdarg_set_opt eval "${arrname}[$((prevlen + 1))]=\"$arg\"" ;; $CMDARG_TYPE_HASH) - arrname="${key}" - # Want to know WTF I named this variable like this? - # http://stackoverflow.com/questions/10258686/bash-associative-array-error - # ... Apparently there is a bug in bash. - cmdarghashkeythingy31337=$(echo "$arg" | cut -d = -f 1) - v=$(echo "$arg" | cut -d = -f 2-) - lval="${arrname}['${cmdarghashkeythingy31337}']" - eval "$lval=\"$v\"" + local arrname=${key} + declare -gA -- "$arrname" + local k=${arg%%=*} + local v=${arg#*=} + eval "$arrname[\$k]=\$v" ;; *) echo "Unable to return string description for ${key}; unknown type ${CMDARG_TYPES[$key]}" >&2